New file |
| | |
| | | /.idea/ |
| | | **/target/ |
| | | *.iml |
| | | /app-log/ |
| | | **/roses/**/target/ |
| | |
| | | ## PsychologicalCounseling |
| | | ## Guns架构说明 |
| | | |
| | | 心理咨询 |
| | | ### 项目结构 |
| | | |
| | | > 后端代码在项目的src/main/java目录下,整体结构如下: |
| | | |
| | | ``` |
| | | |-config // 项目的配置,Bean的配置 |
| | | |-core // 项目运行的和新机制和通用常量、枚举等 |
| | | |-modular // 后端业务代码 |
| | | | |-business // 这里写您的后端业务java代码 |
| | | | |-system // 这里写Guns自带业务的java代码 |
| | | |-GunsApplication // 项目启动类 |
| | | |-GunsServletInitializer // 项目Servlet初始化类,打war包用 |
| | | ``` |
| | | |
| | | ### 配套手册 |
| | | |
| | | `Guns 文档` |
| | | [https://www.javaguns.com/gunsDoc?categoryId=1504358893655011330&artId=1504360559456399362](https://www.javaguns.com/gunsDoc?categoryId=1504358893655011330&artId=1504360559456399362) |
| | | |
| | | `Guns DevOps文档` |
| | | [https://www.javaguns.com/gunsDoc?categoryId=1504359081752768514&artId=1504394797299843073](https://www.javaguns.com/gunsDoc?categoryId=1504359081752768514&artId=1504394797299843073) |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>xinlizixun</artifactId> |
| | | <version>7.3.3</version> |
| | | </parent> |
| | | |
| | | <artifactId>common-buiness</artifactId> |
| | | <packaging>jar</packaging> |
| | | |
| | | <properties> |
| | | <maven.compiler.source>8</maven.compiler.source> |
| | | <maven.compiler.target>8</maven.compiler.target> |
| | | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| | | </properties> |
| | | <dependencies> |
| | | |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>system-business-user</artifactId> |
| | | <version>${roses.version}</version> |
| | | </dependency> |
| | | <!--系统管理的api--> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>system-api</artifactId> |
| | | <version>${roses.version}</version> |
| | | </dependency> |
| | | |
| | | <!--资源api模块--> |
| | | <!--用在资源控制器,资源扫描上--> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>scanner-api</artifactId> |
| | | <version>${roses.version}</version> |
| | | </dependency> |
| | | |
| | | <!--参数校验模块--> |
| | | <!--用在控制器,参数校验--> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>validator-api</artifactId> |
| | | <version>${roses.version}</version> |
| | | </dependency> |
| | | |
| | | <!--数据库sdk--> |
| | | <!--数据库dao框架--> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>db-sdk-mp</artifactId> |
| | | <version>${roses.version}</version> |
| | | </dependency> |
| | | |
| | | <!--web模块--> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-web</artifactId> |
| | | </dependency> |
| | | |
| | | <!--缓存api--> |
| | | <!--角色的查询会使用缓存--> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>cache-api</artifactId> |
| | | <version>${roses.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>cache-sdk-memory</artifactId> |
| | | <version>${roses.version}</version> |
| | | <optional>true</optional> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>cache-sdk-redis</artifactId> |
| | | <version>${roses.version}</version> |
| | | <optional>true</optional> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>io.springfox</groupId> |
| | | <artifactId>springfox-swagger2</artifactId> |
| | | <scope>provided</scope> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>io.springfox</groupId> |
| | | <artifactId>springfox-swagger-ui</artifactId> |
| | | <scope>provided</scope> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>commons-io</groupId> |
| | | <artifactId>commons-io</artifactId> |
| | | <version>2.2</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.apache.poi</groupId> |
| | | <artifactId>poi-ooxml</artifactId> |
| | | <version>4.1.2</version> |
| | | <scope>compile</scope> |
| | | <optional>true</optional> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.huaweicloud</groupId> |
| | | <artifactId>esdk-obs-java-bundle</artifactId> |
| | | <version>[3.21.11,)</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>customer-business</artifactId> |
| | | <version>${roses.version}</version> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | |
| | | <!--IM模块--> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>im-spring-boot-starter</artifactId> |
| | | <version>${roses.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>sms-business-validation</artifactId> |
| | | <version>${roses.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.controller; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingUser; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingUserService; |
| | | import cn.hutool.core.collection.ListUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; |
| | | import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; |
| | | import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.BusinessLog; |
| | | import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; |
| | | import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; |
| | | import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; |
| | | import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 用户咨询师课时信息管理类 |
| | | * @author guo |
| | | */ |
| | | @RestController |
| | | @Api(tags = "用户咨询师课时信息管理类") |
| | | @ApiResource(name = "用户咨询师课时信息管理类", resBizType = ResBizTypeEnum.BUSINESS) |
| | | @RequestMapping("/business") |
| | | public class CounsellingUserController { |
| | | |
| | | @Resource |
| | | private ICounsellingUserService counsellingUserService; |
| | | |
| | | /** |
| | | * 添加用户咨询师课时信息 |
| | | */ |
| | | @ApiOperation("添加用户咨询师课时信息") |
| | | @PostResource(name = "添加用户咨询师课时信息", path = "/counsellingUser/add") |
| | | @BusinessLog |
| | | public ResponseData<?> add(@RequestBody CounsellingUser counsellingUser) { |
| | | this.counsellingUserService.save(counsellingUser); |
| | | return new SuccessResponseData<>(); |
| | | } |
| | | |
| | | /** |
| | | * 删除用户咨询师课时信息 |
| | | */ |
| | | @ApiOperation("删除用户咨询师课时信息") |
| | | @PostResource(name = "删除用户咨询师课时信息", path = "/counsellingUser/delete") |
| | | @BusinessLog |
| | | public ResponseData<?> delete(@RequestParam String ids) { |
| | | if (StrUtil.isBlank(ids)){ |
| | | return new ErrorResponseData<>("500","id不能为空"); |
| | | } |
| | | LambdaUpdateWrapper<CounsellingUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<CounsellingUser>().set(CounsellingUser::getIsDelete,true); |
| | | lambdaUpdateWrapper.in(CounsellingUser::getId, ListUtil.toList(ids.split(","))); |
| | | this.counsellingUserService.update(lambdaUpdateWrapper); |
| | | return new SuccessResponseData<>(); |
| | | } |
| | | |
| | | /** |
| | | * 修改用户咨询师课时信息 |
| | | */ |
| | | @ApiOperation("修改用户咨询师课时信息") |
| | | @PostResource(name = "修改用户咨询师课时信息", path = "/counsellingUser/edit") |
| | | @BusinessLog |
| | | public ResponseData<?> edit(@RequestBody CounsellingUser counsellingUser) { |
| | | this.counsellingUserService.updateById(counsellingUser); |
| | | return new SuccessResponseData<>(); |
| | | } |
| | | |
| | | /** |
| | | * 修改用户咨询师课时信息状态 |
| | | */ |
| | | @ApiOperation("修改用户咨询师课时信息状态") |
| | | @PostResource(name = "修改用户咨询师课时信息状态", path = "/counsellingUser/updateStatus") |
| | | @BusinessLog |
| | | public ResponseData<?> updateStatus(String ids, Integer status) { |
| | | if (StrUtil.isBlank(ids)){ |
| | | return new ErrorResponseData<>("500","id不能为空"); |
| | | } |
| | | LambdaUpdateWrapper<CounsellingUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<CounsellingUser>().set(CounsellingUser::getStatusFlag,status); |
| | | lambdaUpdateWrapper.in(CounsellingUser::getId, ListUtil.toList(ids.split(","))); |
| | | this.counsellingUserService.update(lambdaUpdateWrapper); |
| | | return new SuccessResponseData<>(); |
| | | } |
| | | |
| | | /** |
| | | * 获取用户咨询师课时信息详情 |
| | | */ |
| | | @ApiOperation("获取用户咨询师课时信息详情") |
| | | @GetResource(name = "获取用户咨询师课时信息详情", path = "/counsellingUser/detail/{id}", requiredPermission = false) |
| | | public ResponseData<CounsellingUser> detail(@PathVariable("id") Long id) { |
| | | CounsellingUser counsellingUser = this.counsellingUserService.getById(id); |
| | | return new SuccessResponseData<>(counsellingUser); |
| | | } |
| | | |
| | | /** |
| | | * 获取用户咨询师课时信息列表 |
| | | */ |
| | | @ApiOperation("获取用户咨询师课时信息列表") |
| | | @GetResource(name = "获取用户咨询师课时信息列表", path = "/counsellingUser/list", requiredPermission = false) |
| | | public ResponseData<List<CounsellingUser>> list(CounsellingUser counsellingUser) { |
| | | LambdaQueryWrapper<CounsellingUser> lambdaQueryWrapper = new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getIsDelete,false) |
| | | .orderByDesc(CounsellingUser::getId); |
| | | return new SuccessResponseData<>(counsellingUserService.list(lambdaQueryWrapper)); |
| | | } |
| | | |
| | | /** |
| | | * 获取用户咨询师课时信息列表(分页) |
| | | */ |
| | | @ApiOperation("获取用户咨询师课时信息列表(分页)") |
| | | @GetResource(name = "获取用户咨询师课时信息列表(分页)", path = "/counsellingUser/page", requiredPermission = false) |
| | | public ResponseData<PageResult<CounsellingUser>> page(CounsellingUser counsellingUser) { |
| | | LambdaQueryWrapper<CounsellingUser> lambdaQueryWrapper = new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getIsDelete,false) |
| | | .orderByDesc(CounsellingUser::getId); |
| | | Page<CounsellingUser> page = this.counsellingUserService.page(PageFactory.defaultPage(), lambdaQueryWrapper); |
| | | return new SuccessResponseData<>(PageResultFactory.createPageResult(page)); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.controller; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.lang.Assert; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.request.SysSmsSendParamRequest; |
| | | import cn.stylefeng.guns.modular.business.service.IAreaService; |
| | | import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; |
| | | import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; |
| | | import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfo; |
| | | import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; |
| | | import cn.stylefeng.roses.kernel.customer.modular.request.CustomerIdRequest; |
| | | import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService; |
| | | import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; |
| | | import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; |
| | | import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; |
| | | import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; |
| | | import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsSendParam; |
| | | import cn.stylefeng.roses.kernel.sms.modular.service.SysSmsInfoService; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | @Api(tags = "C端用户") |
| | | @RestController |
| | | @ApiResource(name = "C端用户个人信息修改") |
| | | public class CustomerInfoBizController { |
| | | |
| | | @Resource |
| | | private IAreaService areaService; |
| | | |
| | | @Resource |
| | | private CustomerService customerService; |
| | | |
| | | @Resource |
| | | private SysSmsInfoService sysSmsInfoService; |
| | | |
| | | @ApiOperation(value = "发送验证码短信") |
| | | @PostResource(name = "发送验证码短信", path = "/sms/sendMessageByPhone", requiredLogin = false, requiredPermission = false) |
| | | public ResponseData<Boolean> sendMessageByPhone(@RequestBody SysSmsSendParamRequest req) { |
| | | if (StrUtil.isNotBlank(req.getPhone())) { |
| | | long count = customerService.count( |
| | | Wrappers.<Customer>lambdaQuery() |
| | | .eq(Customer::getAccount, req.getPhone()) |
| | | .eq(Customer::getStatusFlag, StatusEnum.ENABLE.getCode()) |
| | | ); |
| | | Assert.isTrue(count > 0, "手机号不存在"); |
| | | } |
| | | |
| | | SysSmsSendParam sysSmsSendParam = BeanUtil.copyProperties(req, SysSmsSendParam.class); |
| | | return new SuccessResponseData<>(sysSmsInfoService.sendShortMessage(sysSmsSendParam)); |
| | | } |
| | | |
| | | /** |
| | | * 获取个人信息 |
| | | */ |
| | | @ApiOperation("获取个人信息") |
| | | @GetResource(name = "获取个人信息", path = "/customerInfo/getPersonInfo", requiredPermission = false) |
| | | public ResponseData<CustomerInfo> getPersonInfo(CustomerIdRequest customerRequest) { |
| | | if (customerRequest.getCustomerId() == null) { |
| | | // 获取当前登录用户信息 |
| | | LoginUser loginUser = LoginContext.me().getLoginUser(); |
| | | Long userId = loginUser.getUserId(); |
| | | customerRequest.setCustomerId(userId); |
| | | } |
| | | CustomerInfo customerInfo = customerService.getCustomerInfoById(customerRequest.getCustomerId()); |
| | | if (customerInfo != null && StrUtil.isNotBlank(customerInfo.getCityCode())) { |
| | | customerInfo.setCityCodeStr(areaService.getNameByCodeAddPrefix("/", customerInfo.getCityCode())); |
| | | } |
| | | return new SuccessResponseData<>(customerInfo); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | /** |
| | | * ID名称 |
| | | * @author goupan |
| | | */ |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @ApiModel(value = "ID名称-响应参数") |
| | | public class BaseIdNameDTO { |
| | | |
| | | @ApiModelProperty(value = "ID") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "名称") |
| | | private String name; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @ApiModel(value = "咨询订单-请求参数") |
| | | @Data |
| | | public class CounsellingOrderReservationRequestDTO extends BaseRequest { |
| | | |
| | | @ApiModelProperty(value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝") |
| | | @ChineseDescription("预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝") |
| | | private Integer stauts; |
| | | |
| | | @ApiModelProperty(value = "咨询师名称") |
| | | @ChineseDescription("咨询师名称") |
| | | private String counsellingInfoName; |
| | | |
| | | @ApiModelProperty(value = "用户名称") |
| | | @ChineseDescription("用户名称") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "预约类型 1-首次面诊,2-咨询疗程") |
| | | @ChineseDescription("预约类型 1-首次面诊,2-咨询疗程") |
| | | private Integer reservationType; |
| | | |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "咨询订单id") |
| | | @ChineseDescription("咨询订单id") |
| | | private Long counsellingOrderId; |
| | | |
| | | @ApiModelProperty(value = "当前用户id(前端不用传)") |
| | | @ChineseDescription("当前用户id(前端不用传)") |
| | | private Long customerId; |
| | | |
| | | @ApiModelProperty(value = "搜索类型 1-代表行程查询,2-预约管理查询") |
| | | @ChineseDescription("搜索类型 1-代表行程查询,2-预约管理查询") |
| | | private Integer searchType; |
| | | } |
| | | |
| | | |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | |
| | | @ApiModel("预约记录实体-响应参数") |
| | | @Data |
| | | public class CounsellingOrderReservationResponseDTO implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "预约记录id") |
| | | @ChineseDescription("预约记录id") |
| | | private Long id; |
| | | /** |
| | | * 咨询id |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "咨询id") |
| | | @ChineseDescription("咨询id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | |
| | | /** |
| | | * 预约开始时间点 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "预约开始时间点") |
| | | @ChineseDescription("预约开始时间点") |
| | | private Date reservationBeginTime; |
| | | /** |
| | | * 预约结束时间点 |
| | | */ |
| | | @ApiModelProperty(value = "预约结束时间点") |
| | | @ChineseDescription("预约结束时间点") |
| | | private Date reservationEndTime; |
| | | |
| | | @ApiModelProperty(value = "预约日期") |
| | | @ChineseDescription("预约日期") |
| | | private Date reservationDate; |
| | | |
| | | @ApiModelProperty(value = "用户名称") |
| | | @ChineseDescription("用户名称") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty(value = "预约类型 1-首次面诊,2-咨询疗程") |
| | | @ChineseDescription("预约类型 1-首次面诊,2-咨询疗程") |
| | | private Integer reservationType; |
| | | |
| | | @ApiModelProperty(value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝") |
| | | @ChineseDescription("预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝") |
| | | private Integer stauts; |
| | | |
| | | public Date getReservationDate() { |
| | | if (this.reservationBeginTime != null){ |
| | | return DateUtil.parseDate(DateUtil.format(this.reservationBeginTime,"yyyy-MM-dd")); |
| | | } |
| | | return reservationDate; |
| | | } |
| | | |
| | | /** |
| | | * 联系电话 |
| | | */ |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "订单id") |
| | | @ChineseDescription("订单id") |
| | | private Long counsellingOrderId; |
| | | |
| | | @ApiModelProperty(value = "预约开始时间点字符串") |
| | | @ChineseDescription("预约开始时间点字符串") |
| | | private String reservationBeginTimeStr; |
| | | /** |
| | | * 预约结束时间点 |
| | | */ |
| | | @ApiModelProperty(value = "预约结束时间点字符串") |
| | | @ChineseDescription("预约结束时间点字符串") |
| | | private String reservationEndTimeStr; |
| | | |
| | | public String getReservationBeginTimeStr() { |
| | | if (this.reservationBeginTime != null){ |
| | | return DateUtil.format(this.reservationBeginTime,"yyyy-MM-dd HH:mm"); |
| | | } |
| | | return reservationBeginTimeStr; |
| | | } |
| | | |
| | | public String getReservationEndTimeStr() { |
| | | if (this.reservationEndTime != null){ |
| | | return DateUtil.format(this.reservationEndTime,"yyyy-MM-dd HH:mm"); |
| | | } |
| | | return reservationEndTimeStr; |
| | | } |
| | | |
| | | @ApiModelProperty(value = "咨询师名称") |
| | | @ChineseDescription("咨询师名称") |
| | | private String counsellingInfoName; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CustomerUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingOrder; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @ApiModel("咨询订单-响应参数") |
| | | public class CounsellingOrderResponseDTO extends CounsellingOrder { |
| | | |
| | | @ApiModelProperty("咨询师名称") |
| | | private String counsellingName; |
| | | |
| | | @ApiModelProperty("用户姓名") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty("陪护教练名称") |
| | | private String companionUserName; |
| | | |
| | | @ApiModelProperty("咨询顾问名称") |
| | | private String consultantUserName; |
| | | |
| | | @ApiModelProperty("展示状态用于后台系统展示:0待支付,1已完成,3服务中,9取消,10退款,11-已支付") |
| | | private Integer showState; |
| | | |
| | | @ApiModelProperty("现状用户信息") |
| | | private CustomerUpdateRequest customerUpdateRequest; |
| | | |
| | | @ApiModelProperty(value = "咨询师类型 1-首席咨询师,2-明星咨询师") |
| | | @ChineseDescription("咨询师类型 1-首席咨询师,2-明星咨询师") |
| | | private Integer counsellingType; |
| | | |
| | | public CustomerUpdateRequest getCustomerUpdateRequest() { |
| | | if (StrUtil.isNotBlank(this.getUserInfoJson())){ |
| | | return JSONUtil.toBean(this.getUserInfoJson(), CustomerUpdateRequest.class); |
| | | } |
| | | return customerUpdateRequest; |
| | | } |
| | | |
| | | public Integer getShowState() { |
| | | Integer statusFlag = getStatusFlag(); |
| | | //判断订单状态 |
| | | if (statusFlag != null && getOrderType() != null){ |
| | | if (statusFlag.intValue() == 0){ |
| | | return 0; |
| | | } else if (statusFlag.intValue() == 1) { |
| | | Date nowDate = new Date(); |
| | | //判断订单类型 |
| | | if (getOrderType().intValue() ==1 ){ |
| | | if (getFirstAppointmentDate() == null){ |
| | | return 3; |
| | | }else{ |
| | | String Date = DateUtil.formatDate(getFirstAppointmentDate()) + " " + getFirstAppointmentTimes().split("-")[1]+":00"; |
| | | if (nowDate.getTime() > DateUtil.parseDateTime(Date).getTime()){ |
| | | return 1; |
| | | }else{ |
| | | return 11; |
| | | } |
| | | |
| | | } |
| | | } else { |
| | | if (nowDate.getTime() > getEffectiveEndTime().getTime()){ |
| | | return 1; |
| | | }else{ |
| | | return 3; |
| | | } |
| | | } |
| | | |
| | | } else if (statusFlag.intValue() == 2) { |
| | | //订单已完成 |
| | | return 1; |
| | | }else { |
| | | return getStatusFlag(); |
| | | } |
| | | } |
| | | return showState; |
| | | } |
| | | |
| | | @ApiModelProperty("最近预约时间") |
| | | private String lastTime; |
| | | |
| | | @ApiModelProperty("咨询师封面图url") |
| | | private String coverImageUrl; |
| | | |
| | | @ApiModelProperty("首次咨询预约状态 1-未预约首次咨询,2-已预约首次咨询,等待咨询,3-已完成首次预约咨询") |
| | | private Integer isFirstAppointment; |
| | | |
| | | @ApiModelProperty("上架状态 1-上架,2-下架") |
| | | private Integer listingStatus; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | @ApiModel("咨询预约响应") |
| | | @Data |
| | | public class CounsellingReservationDTO implements Serializable { |
| | | |
| | | |
| | | @ApiModelProperty("咨询师id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty("预约日期") |
| | | private Date reservationDay; |
| | | |
| | | @ApiModelProperty("剩余人数 0表示已满") |
| | | private Long remainingNum; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.http.HtmlUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CustomerUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingInfo; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @ApiModel("咨询师师响应dto") |
| | | @Data |
| | | public class CounsellinginfoResponseDTO extends CounsellingInfo { |
| | | |
| | | @ApiModelProperty("是否进行过首次购买 true-是,false-否") |
| | | private Boolean isFirstBuy = false; |
| | | |
| | | @ApiModelProperty(value = "个人简介 无标签") |
| | | @ChineseDescription("个人简介 无标签") |
| | | private String personalProfileNotTag; |
| | | |
| | | public String getPersonalProfileNotTag() { |
| | | if(StrUtil.isNotBlank(this.getPersonalProfile())){ |
| | | return HtmlUtil.cleanHtmlTag(this.getPersonalProfile()); |
| | | } |
| | | return personalProfileNotTag; |
| | | } |
| | | |
| | | @ApiModelProperty(value = "咨询师名称") |
| | | @ChineseDescription("咨询师名称") |
| | | private String nikeName; |
| | | |
| | | @ApiModelProperty(value = "最低价格") |
| | | @ChineseDescription("最低价格") |
| | | private BigDecimal lowPrice; |
| | | |
| | | @ApiModelProperty("上班状态:1上班,2下班,3离职") |
| | | private Integer workStatus; |
| | | |
| | | @ApiModelProperty(value = "咨询师名称") |
| | | @ChineseDescription("咨询师名称") |
| | | private String counsellingInfoName; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.guns.modular.business.entity.CourseOrder; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @ApiModel("课程订单-响应参数") |
| | | @Data |
| | | public class CourseOrderResponseDTO extends CourseOrder { |
| | | |
| | | @ApiModelProperty("课程名称") |
| | | private String courseName; |
| | | |
| | | @ApiModelProperty("用户姓名") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty("课程顾问名称") |
| | | private String courseUserName; |
| | | |
| | | @ApiModelProperty("咨询顾问名称") |
| | | private String tutoringUserName; |
| | | |
| | | @ApiModelProperty("展示状态用于后台系统展示和查询:0待支付,1已完成,3已支付,9取消,10退款") |
| | | private Integer showState; |
| | | |
| | | public Integer getShowState() { |
| | | Integer statusFlag = getStatusFlag(); |
| | | //判断订单状态 |
| | | if (statusFlag != null){ |
| | | if (statusFlag.intValue() == 0){ |
| | | return 0; |
| | | } else if (statusFlag.intValue() == 1) { |
| | | Date nowDate = new Date(); |
| | | if(nowDate.getTime() > getEffectiveEndTime().getTime()){ |
| | | return 1; |
| | | }else{ |
| | | return 3; |
| | | } |
| | | }else if (statusFlag.intValue() == 2) {//订单已完成 |
| | | return 1; |
| | | }else{ |
| | | return getStatusFlag(); |
| | | } |
| | | } |
| | | return showState; |
| | | } |
| | | |
| | | @ApiModelProperty("总课程时长") |
| | | private String totalCourseShowTime = "00:00:00"; |
| | | |
| | | @ApiModelProperty("已学习总课程时长") |
| | | private String studyCourseShowTime = "00:00:00"; |
| | | |
| | | @ApiModelProperty("学习百分比") |
| | | private Integer studyPercent = 0; |
| | | |
| | | @ApiModelProperty(value = "课程详细内容") |
| | | @ChineseDescription("课程详细内容") |
| | | private String courseContent; |
| | | |
| | | @ApiModelProperty(value = "总章节课程数量") |
| | | @ChineseDescription("总章节课程数量") |
| | | private Integer totalCourseChapter; |
| | | |
| | | @ApiModelProperty(value = "已学章节课程数量") |
| | | @ChineseDescription("已学章节课程数量") |
| | | private Integer studyCourseChapter; |
| | | |
| | | public Integer getStudyPercent() { |
| | | if (getTotalTime() != null && getLearnedTime() != null){ |
| | | return (int)Math.ceil(getLearnedTime()*100f/getTotalTime()); |
| | | } |
| | | return studyPercent; |
| | | } |
| | | |
| | | public String getStudyCourseShowTime() { |
| | | if (getLearnedTime() != null){ |
| | | int hour = (int) Math.floor(getLearnedTime().longValue() / 3600f); |
| | | long minute = (int) Math.floor((getLearnedTime().longValue() % 3600) / 60f); |
| | | long sec = (getLearnedTime().longValue() % 3600l) % 60; |
| | | return String.format("%02d", hour)+":"+String.format("%02d", minute)+":"+String.format("%02d", sec); |
| | | } |
| | | return studyCourseShowTime; |
| | | } |
| | | |
| | | public String getTotalCourseShowTime() { |
| | | if (getTotalTime() != null){ |
| | | int hour = (int) Math.floor(getTotalTime().longValue() / 3600f); |
| | | long minute = (int) Math.floor((getTotalTime().longValue() % 3600l) / 60f); |
| | | long sec = (getTotalTime().longValue() % 3600l) % 60; |
| | | return String.format("%02d", hour)+":"+String.format("%02d", minute)+":"+String.format("%02d", sec); |
| | | |
| | | } |
| | | return totalCourseShowTime; |
| | | } |
| | | |
| | | @ApiModelProperty(value = "课程章节学习") |
| | | @ChineseDescription("课程详细内容") |
| | | private List<CourseResponseDTO.CourseChapterResponseDTO> courseChapterResponseDTOList; |
| | | |
| | | @ApiModelProperty(value = "最近一次观看章节id") |
| | | @ChineseDescription("最近一次观看章节id") |
| | | private Long lastLookCourseChapterId; |
| | | |
| | | @ApiModelProperty(value = "上架状态 1-上架,2-下架") |
| | | @ChineseDescription("上架状态 1-上架,2-下架") |
| | | private Integer listingStatus; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseChapter; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | |
| | | @ApiModel("课程响应对象信息") |
| | | @Data |
| | | public class CourseResponseDTO implements Serializable { |
| | | |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 课程/章节名称 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "课程名称") |
| | | @ChineseDescription("课程名称") |
| | | private String courseName; |
| | | /** |
| | | * 课程标签id串,逗号拼接 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "课程标签id串,逗号拼接") |
| | | @ChineseDescription("课程标签id串,逗号拼接") |
| | | private String courseTagIds; |
| | | /** |
| | | * 课程简介 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "课程简介") |
| | | @ChineseDescription("课程简介") |
| | | private String courseIntroduction; |
| | | /** |
| | | * 课程有效期 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "课程有效期") |
| | | @ChineseDescription("课程有效期") |
| | | private Integer courseValidity; |
| | | /** |
| | | * 价格 |
| | | */ |
| | | @ApiModelProperty(value = "价格") |
| | | @ChineseDescription("价格") |
| | | private BigDecimal price; |
| | | /** |
| | | * 原价 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "原价") |
| | | @ChineseDescription("原价") |
| | | private BigDecimal originalPrice; |
| | | /** |
| | | * 课程封面图 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "课程封面图") |
| | | @ChineseDescription("课程封面图") |
| | | private String coverPictureUrl; |
| | | |
| | | /** |
| | | * 课程详细图 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "课程详细图") |
| | | @ChineseDescription("课程详细图") |
| | | private String courseDetailUrl; |
| | | /** |
| | | * 课程详细内容 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "课程详细内容") |
| | | @ChineseDescription("课程详细内容") |
| | | private String courseContent; |
| | | /** |
| | | * 总评分 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "总评分") |
| | | @ChineseDescription("总评分") |
| | | private BigDecimal totalScore; |
| | | /** |
| | | * 上架状态 1-上架,2-下架 |
| | | */ |
| | | |
| | | |
| | | @ApiModelProperty(value = "章节集合") |
| | | @ChineseDescription("章节集合") |
| | | private List<CourseChapter> courseChapterList; |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value = "课程标签名称集合") |
| | | @ChineseDescription("课程标签名称集合") |
| | | private String courseTagNames; |
| | | |
| | | @ApiModelProperty(value = "是否已购买 true-是,false-否") |
| | | @ChineseDescription("是否已购买 true-是,false-否") |
| | | private Boolean isBuy = false; |
| | | |
| | | @ApiModelProperty(value = "已购买人数") |
| | | @ChineseDescription("已购买人数") |
| | | private Integer buyNum = 0; |
| | | |
| | | @ApiModelProperty(value = "课程订单id") |
| | | @ChineseDescription("课程订单id") |
| | | private Long courseOrderId ; |
| | | |
| | | |
| | | @ApiModel("课程章节响应") |
| | | @Data |
| | | public static class CourseChapterResponseDTO extends CourseChapter { |
| | | |
| | | /** |
| | | * 课程总时长 单位S |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "课程总时长 单位S") |
| | | @ChineseDescription("课程总时长 单位S") |
| | | private Long totalTime; |
| | | /** |
| | | * 课程已学时长 |
| | | */ |
| | | @ApiModelProperty(value = "课程已学时长") |
| | | @ChineseDescription("课程已学时长") |
| | | private Long learnedTime; |
| | | |
| | | @ApiModelProperty(value = "已学时长显示") |
| | | @ChineseDescription("已学时长显示") |
| | | private String studyShowTime; |
| | | |
| | | @ApiModelProperty(value = "总时长展示") |
| | | @ChineseDescription("总时长展示") |
| | | private String totalShowTime; |
| | | |
| | | @ApiModelProperty(value = "学习状态 1-已学,0-未学") |
| | | @ChineseDescription("学习状态 1-已学,0-未学") |
| | | private Integer studyState = 0; |
| | | |
| | | @ApiModelProperty("学习百分比") |
| | | private Integer studyPercent = 0; |
| | | |
| | | public Integer getStudyPercent() { |
| | | if (getTotalTime() != null && getLearnedTime() != null){ |
| | | return (int)Math.ceil(getLearnedTime()*100f/getTotalTime()); |
| | | } |
| | | return studyPercent; |
| | | } |
| | | public String getStudyShowTime() { |
| | | if (this.learnedTime != null){ |
| | | int hour = (int) Math.floor(this.learnedTime.longValue() / 3600f); |
| | | long minute = (int) Math.floor((this.learnedTime.longValue() % 3600l) / 60f); |
| | | long sec = (this.learnedTime.longValue() % 3600l) % 60; |
| | | return String.format("%02d", hour)+":"+String.format("%02d", minute)+":"+String.format("%02d", sec); |
| | | } |
| | | return studyShowTime; |
| | | } |
| | | |
| | | public String getTotalShowTime() { |
| | | if (this.totalTime != null){ |
| | | int hour = (int) Math.floor(this.totalTime.longValue() / 3600f); |
| | | long minute = (int) Math.floor((this.totalTime.longValue() % 3600l) / 60f); |
| | | long sec = (this.totalTime.longValue() % 3600l) % 60; |
| | | return String.format("%02d", hour)+":"+String.format("%02d", minute)+":"+String.format("%02d", sec); |
| | | } |
| | | return totalShowTime; |
| | | } |
| | | |
| | | public Integer getStudyState() { |
| | | if (this.learnedTime != null){ |
| | | return 1; |
| | | } |
| | | return studyState; |
| | | } |
| | | |
| | | @ApiModelProperty(value = "章节响应DTO子集") |
| | | @ChineseDescription("章节响应DTO子集") |
| | | private List<CourseChapterResponseDTO> childCourseChapterResponseDTOList; |
| | | |
| | | @ApiModelProperty(value = "最新一次学习位置") |
| | | @ChineseDescription("最新一次学习位置") |
| | | private Long lastStudyTime; |
| | | |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 用户IM信息封装 |
| | | */ |
| | | @Data |
| | | @ApiModel(value = "用户IM信息封装") |
| | | public class CustomerImInfoDTO { |
| | | |
| | | @ChineseDescription("主键id") |
| | | private Long customerId; |
| | | |
| | | @ChineseDescription("昵称") |
| | | private String nickName; |
| | | |
| | | @ChineseDescription("姓名") |
| | | private String realName; |
| | | |
| | | @ChineseDescription("用户头像") |
| | | private String avatar; |
| | | |
| | | @ApiModelProperty("IM通讯token") |
| | | @ChineseDescription("IM通讯token") |
| | | private String imToken; |
| | | |
| | | @ApiModelProperty("岗位ID串,逗号拼接") |
| | | @ChineseDescription("岗位ID串,逗号拼接") |
| | | private String postIds; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | @ApiModel("im有效期返回对象") |
| | | @Data |
| | | public class ImEffectiveInfoDTO implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "群类型:1课程,2咨询") |
| | | @ChineseDescription("群类型:1课程,2咨询") |
| | | private Integer groupType; |
| | | |
| | | @ApiModelProperty(value = "业务订单id") |
| | | @ChineseDescription("业务订单id") |
| | | private Long orderId; |
| | | |
| | | |
| | | @ApiModelProperty(value = "用户id,非工作人员的id") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "有效结束时间") |
| | | private Date effectiveEndTime; |
| | | |
| | | @ApiModelProperty(value = "有效开始时间") |
| | | private Date effectiveBeginTime; |
| | | |
| | | @ApiModelProperty(value = "用户名称") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty(value = "有效状态 1-有效,0-无效") |
| | | private Integer effectiveState ; |
| | | |
| | | @ApiModelProperty(value = "剩余课时数") |
| | | private Integer residueClassHours; |
| | | |
| | | @ApiModelProperty(value = "课时数") |
| | | private Integer classHours; |
| | | |
| | | @ApiModelProperty(value = "联系电话") |
| | | private String phone; |
| | | |
| | | public Integer getEffectiveState() { |
| | | if (this.effectiveEndTime != null){ |
| | | Date nowDate = new Date(); |
| | | if (nowDate.getTime() >= this.effectiveEndTime.getTime()){ |
| | | return 0; |
| | | }else{ |
| | | return 1; |
| | | } |
| | | } |
| | | return effectiveState; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImGroupUser; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "群聊用户列表-响应参数") |
| | | public class ImGroupUserDto extends ImGroupUser { |
| | | |
| | | @ApiModelProperty(value = "昵称") |
| | | @ChineseDescription("昵称") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty("用户头像") |
| | | @ChineseDescription("用户头像") |
| | | private String avatar; |
| | | |
| | | @ApiModelProperty(value = "账号类型,0用户,1工作人员") |
| | | @ChineseDescription("账号类型,0用户,1工作人员") |
| | | private String userType; |
| | | |
| | | @ApiModelProperty(value = "IM通讯token") |
| | | @ChineseDescription("IM通讯token") |
| | | private String imToken; |
| | | |
| | | @ApiModelProperty(value = "岗位ID串") |
| | | @ChineseDescription("岗位ID串") |
| | | private String postIds; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @ApiModel(value = "IM推送数据") |
| | | public class ImPushDataDTO { |
| | | |
| | | @ApiModelProperty(value = "消息类型") |
| | | private String type; |
| | | |
| | | @ApiModelProperty(value = "标题") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "消息内容") |
| | | private String content; |
| | | |
| | | @ApiModelProperty(value = "扩展消息") |
| | | private String extra; |
| | | |
| | | @ApiModelProperty(value = "业务ID") |
| | | private String objId; |
| | | |
| | | @ApiModelProperty(value = "预留字段1") |
| | | private String data1; |
| | | |
| | | @ApiModelProperty(value = "预留字段2") |
| | | private String data2; |
| | | |
| | | @ApiModelProperty(value = "预留字段3") |
| | | private String data3; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @ApiModel(value = "性格分析师时间配置详情-响应参数") |
| | | public class MentalAnalysisTimeConfigDetailDTO { |
| | | |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "咨询师") |
| | | @ChineseDescription("咨询师") |
| | | private String counsellingInfoName; |
| | | |
| | | @ApiModelProperty(value = "性格分析时间配置列表") |
| | | @ChineseDescription("性格分析时间配置列表") |
| | | List<MentalAnalysisTimeConfig> timeConfigList; |
| | | |
| | | @ApiModelProperty(value = "性格分析时间配置dot列表") |
| | | @ChineseDescription("性格分析时间配置dto列表") |
| | | List<TimeConfigDTO> timeConfigDtoList; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "获取性格分析师配置-响应参数") |
| | | public class MentalAnalysisTimeConfigPageDTO { |
| | | |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "用户") |
| | | @ChineseDescription("用户") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty(value = "性格分析师上下架状态:1上架,2下架,3无岗位") |
| | | @ChineseDescription("性格分析师上下架状态:1上架,2下架,3无岗位") |
| | | private Integer mentalAnalysisStatus; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @ApiModel(value = "获取性格分析师配置-响应参数") |
| | | public class MentalAppointmentPageDTO { |
| | | |
| | | @ApiModelProperty(value = "预约ID") |
| | | @ChineseDescription("预约ID") |
| | | private Long id; |
| | | @ApiModelProperty(value = "状态:0预约中,2服务中,3已完成,9已取消") |
| | | @ChineseDescription("状态:0预约中,2服务中,3已完成,9已取消") |
| | | private Integer statusFlag; |
| | | |
| | | @ApiModelProperty(value = "预约类型") |
| | | @ChineseDescription("预约类型") |
| | | private String type; |
| | | |
| | | @ApiModelProperty(value = "预约时间天(yyyy-MM-dd)") |
| | | @ChineseDescription("预约时间天(yyyy-MM-dd)") |
| | | private Date appointmentDay; |
| | | |
| | | @ApiModelProperty(value = "预约时间起(HH:mm)") |
| | | @ChineseDescription("预约时间起(HH:mm)") |
| | | private String beginTimePoint; |
| | | |
| | | @ApiModelProperty(value = "预约时间止(HH:mm)") |
| | | @ChineseDescription("预约时间止(HH:mm)") |
| | | private String endTimePoint; |
| | | |
| | | @ApiModelProperty(value = "咨询师ID") |
| | | @ChineseDescription("咨询师ID") |
| | | private Long workerId; |
| | | |
| | | @ApiModelProperty(value = "咨询师") |
| | | @ChineseDescription("咨询师") |
| | | private String workerNickName; |
| | | |
| | | @ApiModelProperty(value = "咨询师电话") |
| | | @ChineseDescription("咨询师电话") |
| | | private String workerTelephone; |
| | | |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "姓名") |
| | | @ChineseDescription("姓名") |
| | | private String userNickName; |
| | | |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String userTelephone; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | /** |
| | | * 心理测试结果json |
| | | * @author goupan |
| | | */ |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @ApiModel(value = "ID名称-心理测试结果json") |
| | | public class MentalTestContentJsonDTO { |
| | | |
| | | @ApiModelProperty(value = "选项") |
| | | private String itemNo; |
| | | |
| | | @ApiModelProperty(value = "选项名称") |
| | | private String itemName; |
| | | |
| | | @ApiModelProperty(value = "分数") |
| | | private Integer score; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAppointment; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "我的性格分析预约-响应参数") |
| | | public class MentalTestMyMentalAppointmentDTO extends MentalAppointment { |
| | | |
| | | @ApiModelProperty(value = "咨询师姓名") |
| | | @ChineseDescription("咨询师姓名") |
| | | private String workerNickName; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.OrderMentalTest; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "我的测试(订单)-响应参数") |
| | | public class MentalTestMyTestOrderDTO extends OrderMentalTest { |
| | | |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | |
| | | @ApiModelProperty(value = "状态:1正常,2冻结") |
| | | @ChineseDescription("状态:1正常,2冻结") |
| | | private Integer topicStatus; |
| | | |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "分类") |
| | | @ChineseDescription("分类") |
| | | private String classId; |
| | | |
| | | @ApiModelProperty(value = "简介") |
| | | @ChineseDescription("简介") |
| | | private String intro; |
| | | |
| | | @ApiModelProperty(value = "图片") |
| | | @ChineseDescription("图片") |
| | | private String image; |
| | | |
| | | @ApiModelProperty(value = "测试类型:0免费,1付费") |
| | | @ChineseDescription("测试类型:0免费,1付费") |
| | | private Integer testType; |
| | | |
| | | @ApiModelProperty(value = "测试费用") |
| | | @ChineseDescription("测试费用") |
| | | private BigDecimal testAmount; |
| | | |
| | | @ApiModelProperty(value = "咨询1V1,0无,1有") |
| | | @ChineseDescription("咨询1V1,0无,1有") |
| | | private Integer consultOne; |
| | | |
| | | @ApiModelProperty(value = "咨询费用") |
| | | @ChineseDescription("咨询费用") |
| | | private BigDecimal consultAmount; |
| | | |
| | | @ApiModelProperty(value = "是否购买") |
| | | @ChineseDescription("是否购买") |
| | | private boolean payFlag; |
| | | |
| | | @ApiModelProperty(value = "测试人数") |
| | | @ChineseDescription("测试人数") |
| | | private Integer testPeopleNum; |
| | | |
| | | @ApiModelProperty(value = "测试配置人数") |
| | | @ChineseDescription("测试配置人数") |
| | | private Integer testSetNum; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestRecord; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "我的测试-响应参数") |
| | | public class MentalTestMyTestTopicDTO extends MentalTestRecord { |
| | | |
| | | @ApiModelProperty(value = "状态:1正常,2冻结") |
| | | @ChineseDescription("状态:1正常,2冻结") |
| | | private Integer topicStatus; |
| | | |
| | | @ApiModelProperty(value = "状态:1正常,2冻结") |
| | | @ChineseDescription("状态:1正常,2冻结") |
| | | private Integer statusFlag; |
| | | |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "分类") |
| | | @ChineseDescription("分类") |
| | | private String classId; |
| | | |
| | | @ApiModelProperty(value = "简介") |
| | | @ChineseDescription("简介") |
| | | private String intro; |
| | | |
| | | @ApiModelProperty(value = "图片") |
| | | @ChineseDescription("图片") |
| | | private String image; |
| | | |
| | | @ApiModelProperty(value = "测试类型:0免费,1付费") |
| | | @ChineseDescription("测试类型:0免费,1付费") |
| | | private Integer testType; |
| | | |
| | | @ApiModelProperty(value = "测试费用") |
| | | @ChineseDescription("测试费用") |
| | | private BigDecimal testAmount; |
| | | |
| | | @ApiModelProperty(value = "咨询1V1,0无,1有") |
| | | @ChineseDescription("咨询1V1,0无,1有") |
| | | private Integer consultOne; |
| | | |
| | | @ApiModelProperty(value = "咨询费用") |
| | | @ChineseDescription("咨询费用") |
| | | private BigDecimal consultAmount; |
| | | |
| | | @ApiModelProperty(value = "是否测试") |
| | | @ChineseDescription("是否测试") |
| | | private boolean testFlag; |
| | | |
| | | @ApiModelProperty(value = "是否购买") |
| | | @ChineseDescription("是否购买") |
| | | private boolean payFlag; |
| | | |
| | | @ApiModelProperty(value = "测试人数") |
| | | @ChineseDescription("测试人数") |
| | | private Integer testPeopleNum; |
| | | |
| | | @ApiModelProperty(value = "测试配置人数") |
| | | @ChineseDescription("测试配置人数") |
| | | private Integer testSetNum; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestOption; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "心理测试问题-响应参数") |
| | | public class MentalTestQuestionOptionDTO extends MentalTestQuestion { |
| | | |
| | | @ApiModelProperty(value = "心理测试问题选项") |
| | | @ChineseDescription("心理测试问题选项") |
| | | private List<MentalTestOption> optionList; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "心理测试记录订单-响应参数") |
| | | public class MentalTestRecordPageDTO extends MentalTestTopic { |
| | | |
| | | @ApiModelProperty(value = "用户") |
| | | @ChineseDescription("用户") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty(value = "电话") |
| | | @ChineseDescription("电话") |
| | | private String telephone; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestRecord; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "我的测试记录-响应参数") |
| | | public class MentalTestTopicAndRecordDTO extends MentalTestRecord { |
| | | |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | |
| | | @TableField("class_id") |
| | | @ApiModelProperty(value = "分类") |
| | | @ChineseDescription("分类") |
| | | private String classId; |
| | | |
| | | @ApiModelProperty(value = "简介") |
| | | @ChineseDescription("简介") |
| | | private String intro; |
| | | |
| | | @ApiModelProperty(value = "图片") |
| | | @ChineseDescription("图片") |
| | | private String image; |
| | | |
| | | @ApiModelProperty(value = "测试类型:0免费,1付费") |
| | | @ChineseDescription("测试类型:0免费,1付费") |
| | | private Integer testType; |
| | | |
| | | @TableField("test_amount") |
| | | @ApiModelProperty(value = "测试费用") |
| | | @ChineseDescription("测试费用") |
| | | private BigDecimal testAmount; |
| | | |
| | | @TableField("consult_one") |
| | | @ApiModelProperty(value = "咨询1V1,0无,1有") |
| | | @ChineseDescription("咨询1V1,0无,1有") |
| | | private Integer consultOne; |
| | | |
| | | @TableField("consult_amount") |
| | | @ApiModelProperty(value = "咨询费用") |
| | | @ChineseDescription("咨询费用") |
| | | private BigDecimal consultAmount; |
| | | |
| | | @ApiModelProperty(value = "是否后台创建") |
| | | @ChineseDescription("是否后台创建") |
| | | private Boolean isBack; |
| | | |
| | | @ApiModelProperty(value = "是否支付1v1咨询订单") |
| | | @ChineseDescription("是否支付1v1咨询订单") |
| | | private Boolean isPayOrderConsultOne; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "心理测试详情-响应参数") |
| | | public class MentalTestTopicDTO extends MentalTestTopic { |
| | | |
| | | @ApiModelProperty(value = "测试人数") |
| | | @ChineseDescription("测试人数") |
| | | private Integer testPeopleNum; |
| | | |
| | | @ApiModelProperty(value = "是否测试") |
| | | @ChineseDescription("是否测试") |
| | | private boolean testFlag; |
| | | |
| | | @ApiModelProperty(value = "是否购买") |
| | | @ChineseDescription("是否购买") |
| | | private boolean payFlag; |
| | | |
| | | @ApiModelProperty(value = "测试题数") |
| | | @ChineseDescription("测试题数") |
| | | private Integer questionCount; |
| | | |
| | | @ApiModelProperty(value = "测试题目列表") |
| | | @ChineseDescription("测试题目列表") |
| | | private List<MentalTestQuestionOptionDTO> questionList; |
| | | |
| | | @ApiModelProperty(value = "结果区间配置列表") |
| | | @ChineseDescription("结果区间配置列表") |
| | | private List<MentalTestResultSet> resultSetList; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "心理测试题库详情-响应参数") |
| | | public class MentalTestTopicPageDTO extends MentalTestTopic { |
| | | |
| | | @ApiModelProperty(value = "是否测试") |
| | | @ChineseDescription("是否测试") |
| | | private boolean testFlag; |
| | | |
| | | @ApiModelProperty(value = "测试结果记录ID列表") |
| | | @ChineseDescription("测试结果记录ID列表") |
| | | private List<Long> mentalTestRecordIdList; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.util.Map; |
| | | |
| | | @ApiModel("我的统计信息") |
| | | @Data |
| | | public class MyTotalResponseDTO implements Serializable { |
| | | |
| | | @ApiModelProperty("今日数据-性格分析师") |
| | | private Long todayNumP31; |
| | | |
| | | @ApiModelProperty("本月数据-性格分析师") |
| | | private Long monthNumP31; |
| | | |
| | | @ApiModelProperty("订单数量-性格分析师") |
| | | private Long orderNumP31; |
| | | |
| | | @ApiModelProperty("累计收益-性格分析师") |
| | | private BigDecimal sumMoneyP31; |
| | | |
| | | @ApiModelProperty("今日新增培训群量") |
| | | private Long todayGroupNum; |
| | | |
| | | @ApiModelProperty("本月新增培训群量") |
| | | private Long monthGroupNum; |
| | | |
| | | @ApiModelProperty("订单数量") |
| | | private Long orderNum; |
| | | |
| | | @ApiModelProperty("累计收益") |
| | | private BigDecimal sumMoney; |
| | | |
| | | @ApiModelProperty("已完成咨询统计") |
| | | private Long counsellingTotal; |
| | | |
| | | @ApiModelProperty("今日咨询课时") |
| | | private Integer todayCounsellingHours; |
| | | |
| | | @ApiModelProperty("今日首次咨询数") |
| | | private Long todayFirstCounsellingNum; |
| | | |
| | | @ApiModelProperty("本月咨询课时") |
| | | private Integer monthCounsellingHours; |
| | | |
| | | @ApiModelProperty("本月首次咨询数") |
| | | private Long monthFirstCounsellingNum; |
| | | |
| | | @ApiModelProperty("今日课程订单") |
| | | private Long todayCourseOrderNum; |
| | | |
| | | @ApiModelProperty("本月课程订单") |
| | | private Long monthCourseOrderNum; |
| | | |
| | | @ApiModelProperty("今日课程数据Map") |
| | | private Map<String,Integer> todayCourseMap; |
| | | |
| | | @ApiModelProperty("本月课程数据Map") |
| | | private Map<String,Integer> monthCourseMap; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "心理测试订单详情-响应") |
| | | public class OrderMentalTestDetailDTO extends MentalTestTopic { |
| | | |
| | | @ApiModelProperty(value = "订单编号") |
| | | @ChineseDescription("订单编号") |
| | | private String orderNo; |
| | | |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | |
| | | @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试") |
| | | @ChineseDescription("结果计算方式:0得分,1选项,2测试") |
| | | private Integer resultCalculateMode; |
| | | |
| | | @ApiModelProperty(value = "1v1咨询性格分析师") |
| | | @ChineseDescription("1v1咨询性格分析师") |
| | | private Long consultWorkerId; |
| | | |
| | | @ApiModelProperty(value = "1v1咨询性格分析师") |
| | | @ChineseDescription("1v1咨询性格分析师") |
| | | private String consultWorkerName; |
| | | |
| | | @ApiModelProperty(value = "分值") |
| | | @ChineseDescription("分值") |
| | | private Integer score; |
| | | |
| | | @ApiModelProperty(value = "结果描述") |
| | | @ChineseDescription("结果描述") |
| | | private String content; |
| | | |
| | | @ApiModelProperty(value = "是否支付1v1咨询订单") |
| | | @ChineseDescription("是否支付1v1咨询订单") |
| | | private Boolean isPayOrderConsultOne; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "心理测试订单-响应参数") |
| | | public class OrderMentalTestPageDTO extends MentalTestTopic { |
| | | |
| | | @ApiModelProperty(value = "心理测试订单编号") |
| | | @ChineseDescription("心理测试订单编号") |
| | | private String orderNo; |
| | | |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | |
| | | @ApiModelProperty(value = "用户") |
| | | @ChineseDescription("用户") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty(value = "电话") |
| | | @ChineseDescription("电话") |
| | | private String telephone; |
| | | |
| | | @ApiModelProperty(value = "测试时间") |
| | | @ChineseDescription("测试时间") |
| | | private String testCreateTime; |
| | | |
| | | @ApiModelProperty(value = "是否支付1v1咨询订单") |
| | | @ChineseDescription("是否支付1v1咨询订单") |
| | | private Boolean isPayOrderConsultOne; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 分页数据 |
| | | * @author goupan |
| | | */ |
| | | @Data |
| | | @ApiModel(value = "分页数据-请求参数") |
| | | public class PageDTO { |
| | | |
| | | @ApiModelProperty(value = "当前页数") |
| | | private Integer pageNo = 1 ; |
| | | |
| | | @ApiModelProperty(value = "分页条数") |
| | | private Integer pageSize = 20; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @ApiModel(value = "心理测试订单统计数据-响应参数") |
| | | public class StatMentalTestDTO { |
| | | |
| | | @ApiModelProperty(value = "金额列表") |
| | | @ChineseDescription("金额列表") |
| | | private List<Map<String, Object>> moneyList; |
| | | |
| | | @ApiModelProperty(value = "总金额") |
| | | @ChineseDescription("总金额") |
| | | private Object moneySum; |
| | | |
| | | @ApiModelProperty(value = "数量列表") |
| | | @ChineseDescription("数量列表") |
| | | private List<Map<String, Object>> numberList; |
| | | |
| | | @ApiModelProperty(value = "总数量") |
| | | @ChineseDescription("总数量") |
| | | private Object numberSum; |
| | | |
| | | @ApiModelProperty(value = "用户购买数") |
| | | @ChineseDescription("用户购买数") |
| | | private Object userBuyCount; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 工作人员_编辑岗位提示 |
| | | * @author goupan |
| | | */ |
| | | @Data |
| | | @ApiModel(value = "工作人员_编辑岗位提示-响应参数") |
| | | public class SysUserEditPostTipDTO { |
| | | |
| | | @ApiModelProperty(value = "咨询师-是否配置") |
| | | private boolean isSetPo22; |
| | | |
| | | @ApiModelProperty(value = "性格分析师-是否配置") |
| | | private boolean isSetPo31; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * @author guohongjin |
| | | * @create 2024/2/6 17:02 |
| | | */ |
| | | @Data |
| | | @ApiModel("预约时间配置") |
| | | public class TimeConfigDTO implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推") |
| | | @ChineseDescription("预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推") |
| | | private String weeks; |
| | | /** |
| | | * 时间配置集合11:00,12:00 等 |
| | | */ |
| | | @ApiModelProperty(value = "时间配置集合11:00-12:00,10:00-11:00 等") |
| | | @ChineseDescription("时间配置集合11:00-12:00,10:00-11:00 等") |
| | | private String timePoints; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Data |
| | | @ApiModel("统计响应类") |
| | | public class TotalResponseDTO implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "金额列表 data-数据,time-时间") |
| | | @ChineseDescription("金额列表") |
| | | private List<Map<String, Object>> moneyList; |
| | | |
| | | @ApiModelProperty(value = "总金额") |
| | | @ChineseDescription("总金额") |
| | | private Object moneySum; |
| | | |
| | | @ApiModelProperty(value = "数量列表 data-数据,time-时间") |
| | | @ChineseDescription("数量列表 data-数据,time-时间") |
| | | private List<Map<String, Object>> numberList; |
| | | |
| | | @ApiModelProperty(value = "总数量") |
| | | @ChineseDescription("总数量") |
| | | private Object numberSum; |
| | | |
| | | @ApiModelProperty(value = "用户购买数") |
| | | @ChineseDescription("用户购买数") |
| | | private Object userBuyCount; |
| | | |
| | | |
| | | @ApiModelProperty(value = "课程销售数量 courseName-课程名称,number-数量") |
| | | @ChineseDescription("课程销售数量") |
| | | private List<Map<String, Object>> courseSaleNumberList; |
| | | |
| | | |
| | | @ApiModelProperty("课程标签占比 tagName-标签名称,number-数量") |
| | | @ChineseDescription("课程标签占比") |
| | | private List<Map<String, Object>> courseTagsList; |
| | | |
| | | @ApiModelProperty("咨询数据统计-类型数量 type-类型,number-数量") |
| | | @ChineseDescription("咨询数据统计-类型数量") |
| | | private List<Map<String, Object>> counsellingTypeNumList; |
| | | |
| | | @ApiModelProperty("咨询数据统计-咨询师类型 type-类型,number-数量") |
| | | @ChineseDescription("咨询数据统计-咨询师类型 type-类型,number-数量") |
| | | private List<Map<String, Object>> counsellingInfoTypeList; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | @ApiModel("用户课时统计") |
| | | @Data |
| | | public class UserCounsellingTotalDTO implements Serializable { |
| | | |
| | | @ApiModelProperty("总课时数") |
| | | private Integer totalNum; |
| | | |
| | | @ApiModelProperty("未上课时数") |
| | | private Integer residueClassHoursNum; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestRecord; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @ApiModel(value = "用户现状及NLWP-响应参数") |
| | | public class UserCurrentNlwpDTO { |
| | | |
| | | @ApiModelProperty("性别:M-男,F-女") |
| | | @ChineseDescription("性别:M-男,F-女") |
| | | private String sex; |
| | | |
| | | @ApiModelProperty("生日") |
| | | @ChineseDescription("生日") |
| | | private Date birthday; |
| | | |
| | | @ApiModelProperty("教育程度") |
| | | @ChineseDescription("教育程度") |
| | | private String educationLevel; |
| | | |
| | | @ApiModelProperty("职业") |
| | | @ChineseDescription("职业") |
| | | private String occupation; |
| | | |
| | | @ApiModelProperty("婚姻状况") |
| | | @ChineseDescription("婚姻状况") |
| | | private String marital; |
| | | |
| | | @ApiModelProperty("所在城市") |
| | | @ChineseDescription("所在城市") |
| | | private String cityCode; |
| | | |
| | | @ApiModelProperty("所在城市") |
| | | @ChineseDescription("所在城市") |
| | | private String cityCodeStr; |
| | | |
| | | @ApiModelProperty("收入") |
| | | @ChineseDescription("收入") |
| | | private String income; |
| | | |
| | | @ApiModelProperty("子女年龄") |
| | | @ChineseDescription("子女年龄") |
| | | private String childAge; |
| | | |
| | | @ApiModelProperty("现状备注") |
| | | @ChineseDescription("现状备注") |
| | | private String currentRemark; |
| | | |
| | | @ApiModelProperty("NLWP类型测试题结果") |
| | | @ChineseDescription("NLWP类型测试题结果") |
| | | private MentalTestRecord mentalTestRecord; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "性格分析1v1咨询预约-响应参数") |
| | | public class UserMentalAppointmentPageResponseDTO { |
| | | |
| | | @ApiModelProperty(value = "用户") |
| | | @ChineseDescription("用户") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty(value = "电话") |
| | | @ChineseDescription("电话") |
| | | private String telephone; |
| | | |
| | | @ApiModelProperty(value = "测试时间") |
| | | @ChineseDescription("测试时间") |
| | | private String testCreateTime; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | @ApiModel("Banner添加编辑-请求参数") |
| | | @Data |
| | | public class BannerAddUpdateRequest { |
| | | |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "类型:1首页、2课程、3咨询") |
| | | @ChineseDescription("类型:1首页、2课程、3咨询") |
| | | private Integer type; |
| | | |
| | | @ApiModelProperty(value = "名称") |
| | | @ChineseDescription("名称") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "图片") |
| | | @ChineseDescription("图片") |
| | | private String image; |
| | | |
| | | @ApiModelProperty(value = "跳转模块:0不跳转,1心理测试,2课程,3咨询") |
| | | @ChineseDescription("跳转模块:0不跳转,1心理测试,2课程,3咨询") |
| | | private Integer jumpModule; |
| | | |
| | | @ApiModelProperty(value = "跳转页面,1主页,2详情页") |
| | | @ChineseDescription("跳转页面,1主页,2详情页") |
| | | private Integer jumpPage; |
| | | |
| | | @ApiModelProperty(value = "跳转ID") |
| | | @ChineseDescription("跳转ID") |
| | | private Long jumpId; |
| | | |
| | | @ApiModelProperty(value = "排序,默认desc") |
| | | @ChineseDescription("排序,默认desc") |
| | | private Integer sort; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | @ApiModel("咨询订单请求类") |
| | | @Data |
| | | public class CounsellingOrderRequest extends BaseRequest { |
| | | |
| | | @ApiModelProperty("咨询师名称") |
| | | private String counsellingName; |
| | | |
| | | @ApiModelProperty("用户姓名/客户姓名") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty("陪护教练名称") |
| | | private String companionUserName; |
| | | |
| | | @ApiModelProperty("咨询顾问名称") |
| | | private String consultantUserName; |
| | | |
| | | @ApiModelProperty("咨询电话") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "订单类型 1-首次咨询,2-咨询疗程,3-课程续费") |
| | | private Integer orderType; |
| | | |
| | | @ApiModelProperty(value = "状态:0待支付,1已支付,2已完成,9取消,10退款") |
| | | private Integer statusFlag; |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "咨询师id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "工作人员id(工作人员管理端会使用)") |
| | | private Long customerId; |
| | | |
| | | |
| | | @ApiModelProperty(value = "查询类型 1-订单详细,2-预约信息,不给值默认1") |
| | | private Integer searchType; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | @ApiModel("咨询预约") |
| | | @Data |
| | | public class CounsellingReservationRequest implements Serializable { |
| | | |
| | | @ApiModelProperty("预约时间日期 yyyy-MM-dd") |
| | | private String dayTime; |
| | | |
| | | @ApiModelProperty("预约时间点 HH:mm-HH:mm") |
| | | private String timePoint; |
| | | |
| | | @ApiModelProperty("预约订单id") |
| | | private Long counsellingOrderId; |
| | | |
| | | @ApiModelProperty("用户信息对象") |
| | | private CustomerUpdateRequest customerUpdateRequest; |
| | | |
| | | @ApiModelProperty("咨询师id") |
| | | private Long counsellingId; |
| | | |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @ApiModel("咨询师用户请求信息") |
| | | @Data |
| | | public class CounsellingUserRequest extends BaseRequest { |
| | | |
| | | @ApiModelProperty("咨询师名称") |
| | | private String counsellingName; |
| | | |
| | | @ApiModelProperty("用户姓名/客户姓名") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty("陪护教练名称") |
| | | private String companionUserName; |
| | | |
| | | @ApiModelProperty("咨询顾问名称") |
| | | private String consultantUserName; |
| | | |
| | | @ApiModelProperty("咨询电话") |
| | | private String phone; |
| | | |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "状态:0待支付,1已支付,2已完成,9取消,10退款") |
| | | private Integer statusFlag; |
| | | |
| | | @ApiModelProperty("咨询师Id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "工作人员id(工作人员管理端会使用)") |
| | | private Long customerId; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import cn.stylefeng.roses.kernel.validator.api.validators.date.DateValue; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | |
| | | @ApiModel("课程订单请求") |
| | | @Data |
| | | public class CourseOrderRequest extends BaseRequest { |
| | | |
| | | |
| | | @ApiModelProperty("课程名称") |
| | | private String courseName; |
| | | |
| | | @ApiModelProperty("用户姓名") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty("课程顾问名称") |
| | | private String courseUserName; |
| | | |
| | | @ApiModelProperty("课程辅导名称") |
| | | private String tutoringUserName; |
| | | |
| | | @ApiModelProperty("咨询电话") |
| | | private String phone; |
| | | |
| | | |
| | | @ApiModelProperty(value = "状态app端使用:0待支付,1已支付,2已过期,9取消,10退款") |
| | | private Integer statusFlag; |
| | | |
| | | @ApiModelProperty("展示状态用于后台系统展示和查询:0待支付,1已完成,3已支付,9取消,10退款") |
| | | private Integer showState; |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "查询我的课程使用,传多个需要的状态值 使用,隔开 末尾不要,号") |
| | | private String statuFlags; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | @ApiModel("课程下单DTO") |
| | | @Data |
| | | public class CoursePlaceOrderRequest implements Serializable { |
| | | |
| | | |
| | | @ApiModelProperty("课程id") |
| | | private Long courseId; |
| | | |
| | | @ApiModelProperty("用户id") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty("是否后台创建 true-是,false-否") |
| | | private Boolean isBack; |
| | | |
| | | @ApiModelProperty(value = "支付方式,1微信,2支付宝") |
| | | @ChineseDescription("支付方式,1微信,2支付宝") |
| | | private String payType; |
| | | |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | |
| | | @ApiModel("课程请求类") |
| | | @Data |
| | | public class CourseRequest extends BaseRequest { |
| | | |
| | | |
| | | @ApiModelProperty(value = "课程名称") |
| | | @ChineseDescription("课程名称") |
| | | private String courseName; |
| | | |
| | | @ApiModelProperty(value = "上架状态 1-上架,2-下架") |
| | | @ChineseDescription("上架状态 1-上架,2-下架") |
| | | private Integer listingStatus; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | @ApiModel("咨询订单创建DTO") |
| | | @Data |
| | | public class CreateCounsellingOrderRequest implements Serializable { |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "咨询师id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "订单类型 1-首次咨询,2-咨询疗程,3-课程续费") |
| | | private Integer orderType; |
| | | |
| | | @ApiModelProperty(value = "咨询套餐id,首次咨询不用传值") |
| | | private Long counsellingSetMealId; |
| | | |
| | | @ApiModelProperty("是否后台创建 true-是,false-否") |
| | | private Boolean isBack; |
| | | |
| | | @ApiModelProperty(value = "支付方式,1微信,2支付宝") |
| | | @ChineseDescription("支付方式,1微信,2支付宝") |
| | | private String payType; |
| | | |
| | | /** |
| | | * 订单金额 |
| | | */ |
| | | @ApiModelProperty(value = "订单金额") |
| | | @ChineseDescription("订单金额") |
| | | private BigDecimal orderAmount; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @ApiModelProperty(value = "支付金额") |
| | | @ChineseDescription("支付金额") |
| | | private BigDecimal payAmount; |
| | | |
| | | |
| | | @ApiModelProperty("首次咨询预约日期") |
| | | @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") |
| | | private Date firstAppointmentDate; |
| | | |
| | | @ApiModelProperty("首次预约时间点 10:00-11:00") |
| | | private String firstAppointmentTimes; |
| | | |
| | | @ApiModelProperty("用户信息对象") |
| | | private CustomerUpdateRequest customerUpdateRequest; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "1v1咨询性格分析师下单-请求参数") |
| | | public class CreateOrderConsultOneRequest { |
| | | |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "心理测试结果ID") |
| | | @ChineseDescription("心理测试结果ID") |
| | | private Long mentalTestRecordId; |
| | | |
| | | @ApiModelProperty(value = "预约时间(yyyy-MM-dd)") |
| | | @ChineseDescription("预约时间(yyyy-MM-dd)") |
| | | private String appointmentDay; |
| | | |
| | | @ApiModelProperty(value = "预约时间段起(HH:mm)") |
| | | @ChineseDescription("预约时间段起(HH:mm)") |
| | | private String beginTimePoint; |
| | | |
| | | @ApiModelProperty(value = "预约时间段止(HH:mm)") |
| | | @ChineseDescription("预约时间段止(HH:mm)") |
| | | private String endTimePoint; |
| | | |
| | | @ApiModelProperty("姓名") |
| | | @ChineseDescription("姓名") |
| | | private String realName; |
| | | |
| | | @ApiModelProperty("联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String linkPhone; |
| | | |
| | | @ApiModelProperty("性别:M-男,F-女") |
| | | @ChineseDescription("性别:M-男,F-女") |
| | | private String sex; |
| | | |
| | | @ApiModelProperty("生日(yyyy-MM-dd)") |
| | | @ChineseDescription("生日(yyyy-MM-dd)") |
| | | private String birthday; |
| | | |
| | | @ApiModelProperty("教育程度") |
| | | @ChineseDescription("教育程度") |
| | | private String educationLevel; |
| | | |
| | | @ApiModelProperty("职业") |
| | | @ChineseDescription("职业") |
| | | private String occupation; |
| | | |
| | | @ApiModelProperty("婚姻状况") |
| | | @ChineseDescription("婚姻状况") |
| | | private String marital; |
| | | |
| | | @ApiModelProperty("所在城市") |
| | | @ChineseDescription("所在城市") |
| | | private String cityCode; |
| | | |
| | | @ApiModelProperty("收入") |
| | | @ChineseDescription("收入") |
| | | private String income; |
| | | |
| | | @ApiModelProperty("子女年龄") |
| | | @ChineseDescription("子女年龄") |
| | | private String childAge; |
| | | |
| | | @ApiModelProperty("现状备注") |
| | | @ChineseDescription("现状备注") |
| | | private String currentRemark; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "心理测试下单-请求参数") |
| | | public class CreateOrderMentalTestRequest { |
| | | |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "绑定微信OpenId-请求参数") |
| | | public class CustomerBindOpenIdRequest { |
| | | |
| | | @ApiModelProperty(value = "微信OpenId") |
| | | @ChineseDescription("微信OpenId") |
| | | private String wxOpenId; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "用户手机号登录-请求参数") |
| | | public class CustomerPhoneLoginRequest { |
| | | |
| | | @ApiModelProperty(value = "手机号") |
| | | @ChineseDescription("手机号") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "32位小写md5(加密盐+手机号)") |
| | | @ChineseDescription("32位小写md5(加密盐+手机号)") |
| | | private String phoneMd5; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "修改用户信息-请求参数") |
| | | public class CustomerUpdateRequest { |
| | | |
| | | @ApiModelProperty("主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long customerId; |
| | | |
| | | @ApiModelProperty("昵称") |
| | | @ChineseDescription("昵称") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty("邮箱") |
| | | @ChineseDescription("邮箱") |
| | | private String email; |
| | | |
| | | @ApiModelProperty("用户头像") |
| | | @ChineseDescription("用户头像") |
| | | private String avatar; |
| | | |
| | | @ApiModelProperty("用户头像的文件全名") |
| | | @ChineseDescription("用户头像的文件全名") |
| | | private String avatarObjectName; |
| | | |
| | | @ApiModelProperty("联系姓名") |
| | | @ChineseDescription("联系姓名") |
| | | private String realName; |
| | | |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String linkPhone; |
| | | |
| | | @ApiModelProperty("性别:M-男,F-女") |
| | | @ChineseDescription("性别:M-男,F-女") |
| | | private String sex; |
| | | |
| | | @ApiModelProperty("生日(yyyy-MM-dd)") |
| | | @ChineseDescription("生日(yyyy-MM-dd)") |
| | | private String birthday; |
| | | |
| | | @ApiModelProperty("教育程度") |
| | | @ChineseDescription("教育程度") |
| | | private String educationLevel; |
| | | |
| | | @ApiModelProperty("职业") |
| | | @ChineseDescription("职业") |
| | | private String occupation; |
| | | |
| | | @ApiModelProperty("婚姻状况") |
| | | @ChineseDescription("婚姻状况") |
| | | private String marital; |
| | | |
| | | @ApiModelProperty("所在城市") |
| | | @ChineseDescription("所在城市") |
| | | private String cityCode; |
| | | |
| | | @ApiModelProperty("城市地址名称") |
| | | @ChineseDescription("城市地址名称") |
| | | private String cityCodeStr; |
| | | |
| | | @ApiModelProperty("收入") |
| | | @ChineseDescription("收入") |
| | | private String income; |
| | | |
| | | @ApiModelProperty("子女年龄") |
| | | @ChineseDescription("子女年龄") |
| | | private String childAge; |
| | | |
| | | @ApiModelProperty("现状备注") |
| | | @ChineseDescription("现状备注") |
| | | private String currentRemark; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "微信OpenId登录-请求参数") |
| | | public class CustomerWxOpenIdLoginRequest { |
| | | |
| | | @ApiModelProperty(value = "微信OpenId", required = true) |
| | | @ChineseDescription("微信OpenId") |
| | | private String wxOpenId; |
| | | |
| | | @ApiModelProperty(value = "手机号") |
| | | @ChineseDescription("手机号") |
| | | private String phone; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @ApiModel("群聊信息编辑-请求参数") |
| | | @Data |
| | | public class ImGroupUpdateRequest { |
| | | |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "群名") |
| | | @ChineseDescription("群名") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "简介") |
| | | @ChineseDescription("简介") |
| | | private String intro; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel("测试发送IM消息-请求参数") |
| | | public class ImTestMessageSendRequest { |
| | | |
| | | @ApiModelProperty(value = "消息类型,0系统通知,1单聊,2群聊") |
| | | private Integer sendTpe; |
| | | |
| | | @ApiModelProperty(value = "发送方ID") |
| | | private String fromUserId; |
| | | |
| | | @ApiModelProperty(value = "发送方ID") |
| | | private String toId; |
| | | |
| | | @ApiModelProperty(value = "IM推送数据") |
| | | private ImPushDataDTO pushData; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel("性格分析特殊时段删除-请求参数") |
| | | public class MentalAnalysisSpecialTimeConfigDeleteRequest { |
| | | |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "特殊日期 yyyy-MM-dd") |
| | | @ChineseDescription("特殊日期 yyyy-MM-dd") |
| | | private String specialDay; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel("性格分析特殊时段-请求参数") |
| | | public class MentalAnalysisSpecialTimeConfigEdit2Request { |
| | | |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "特殊日期 yyyy-MM-dd") |
| | | @ChineseDescription("特殊日期 yyyy-MM-dd") |
| | | private String specialDay; |
| | | |
| | | @ApiModelProperty(value = "时间段列表(空设置取消当天)") |
| | | @ChineseDescription("时间段列表(空设置取消当天)") |
| | | private List<SpecialTimeConfig> specialTimeConfigList; |
| | | |
| | | @Data |
| | | public static class SpecialTimeConfig { |
| | | @ApiModelProperty(value = "特殊开始时间点 HH:mm") |
| | | @ChineseDescription("特殊开始时间点 HH:mm") |
| | | private String specialBeginTimePoint; |
| | | |
| | | @ApiModelProperty(value = "特殊结束时间点 HH:mm") |
| | | @ChineseDescription("特殊结束时间点 HH:mm") |
| | | private String specialEndTimePoint; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @ApiModel("性格分析特殊时段-请求参数") |
| | | public class MentalAnalysisSpecialTimeConfigEditRequest { |
| | | |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "特殊日期 yyyy-MM-dd") |
| | | @ChineseDescription("特殊日期 yyyy-MM-dd") |
| | | private Date specialDay; |
| | | |
| | | @ApiModelProperty(value = "特殊开始时间点 HH:mm") |
| | | @ChineseDescription("特殊开始时间点 HH:mm") |
| | | private String specialBeginTimePoint; |
| | | |
| | | @ApiModelProperty(value = "特殊结束时间点 HH:mm") |
| | | @ChineseDescription("特殊结束时间点 HH:mm") |
| | | private String specialEndTimePoint; |
| | | |
| | | @ApiModelProperty(value = "是否取消当天 1-是 0-否") |
| | | @ChineseDescription("是否取消当天 1-是 0-否") |
| | | private Integer isCancelDay; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.TimeConfigDTO; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @ApiModel("性格分析师配置可预约时间新增修改-请求参数") |
| | | @Data |
| | | public class MentalAnalysisTimeAddUpdateRequest { |
| | | |
| | | @ApiModelProperty(value = "可预约时间配置集合") |
| | | @ChineseDescription("可预约时间配置集合") |
| | | private List<TimeConfigDTO> timeConfigDTOList; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.TimeConfigDTO; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @ApiModel("性格分析师时间配置新增修改-请求参数") |
| | | @Data |
| | | public class MentalAnalysisTimeConfigAddUpdateRequest { |
| | | |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | |
| | | @ApiModelProperty(value = "预约时间配置集合") |
| | | @ChineseDescription("预约时间配置集合") |
| | | private List<TimeConfigDTO> timeConfigDTOList; |
| | | |
| | | // @ApiModelProperty(value = "性格分析师配置") |
| | | // @ChineseDescription("性格分析师配置") |
| | | // private List<TimeConfigRequest> timeConfigList; |
| | | // |
| | | // @Data |
| | | // public static class TimeConfigRequest { |
| | | // @ApiModelProperty(value = "主键id(编辑、删除必填)") |
| | | // @ChineseDescription("主键id(编辑、删除必填)") |
| | | // private Long id; |
| | | // |
| | | // @ApiModelProperty(value = "模块编号") |
| | | // @ChineseDescription("模块编号") |
| | | // private String moduleNo; |
| | | // |
| | | // @ApiModelProperty(value = "星期几") |
| | | // @ChineseDescription("星期几") |
| | | // private Integer weekDay; |
| | | // |
| | | // @ApiModelProperty(value = "时间点 HH:mm") |
| | | // @ChineseDescription("时间点 HH:mm") |
| | | // private String beginTimePoint; |
| | | // |
| | | // @ApiModelProperty(value = "结束时间点") |
| | | // @ChineseDescription("结束时间点") |
| | | // private String endTimePoint; |
| | | // |
| | | // @ApiModelProperty(value = "删除状态(删除必填) 是否删除 1-是,0-否") |
| | | // @ChineseDescription("删除状态(删除必填) 是否删除 1-是,0-否") |
| | | // private Integer isDelete; |
| | | // } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel("性格分析可预约时间编辑-请求参数") |
| | | public class MentalAnalysisTimeEditRequest { |
| | | |
| | | @ApiModelProperty(value = "ID(编辑必填)") |
| | | @ChineseDescription("ID(编辑必填)") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "模块编号") |
| | | @ChineseDescription("模块编号") |
| | | private String moduleNo; |
| | | |
| | | @ApiModelProperty(value = "星期几") |
| | | @ChineseDescription("星期几") |
| | | private Integer weekDay; |
| | | |
| | | @ApiModelProperty(value = "时间点 HH:mm") |
| | | @ChineseDescription("时间点 HH:mm") |
| | | private String beginTimePoint; |
| | | |
| | | @ApiModelProperty(value = "结束时间点") |
| | | @ChineseDescription("结束时间点") |
| | | private String endTimePoint; |
| | | |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记(删除必填):1已删除,0未删除") |
| | | private Integer isDelete; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @ApiModel("性格分析师布置作业-请求参数") |
| | | @Data |
| | | public class MentalAppointmentAssignWorkRequest { |
| | | |
| | | @ApiModelProperty(value = "预约ID") |
| | | @ChineseDescription("预约ID") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "作业内容") |
| | | @ChineseDescription("作业内容") |
| | | private String workContent; |
| | | |
| | | @ApiModelProperty(value = "作业图片") |
| | | @ChineseDescription("作业图片") |
| | | private String workImage; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @ApiModel("性格分析师咨询记录内容-请求参数") |
| | | @Data |
| | | public class MentalAppointmentRecordRequest { |
| | | |
| | | @ApiModelProperty(value = "预约ID") |
| | | @ChineseDescription("预约ID") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "记录内容") |
| | | @ChineseDescription("记录内容") |
| | | private String recordContent; |
| | | |
| | | @ApiModelProperty(value = "记录图片") |
| | | @ChineseDescription("记录图片") |
| | | private String recordImage; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "心理测试答题提交-请求参数") |
| | | public class MentalTestAnswerSubmitRequest { |
| | | |
| | | @ApiModelProperty(value = "心理测试订单编号") |
| | | @ChineseDescription("心理测试订单编号") |
| | | private String mentalTestOrderNo; |
| | | |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | |
| | | @ApiModelProperty(value = "问题选项") |
| | | @ChineseDescription("问题选项") |
| | | private List<QuestionRequest> questionRequestsList; |
| | | |
| | | @Data |
| | | public static class QuestionRequest { |
| | | @ApiModelProperty(value = "问题ID") |
| | | @ChineseDescription("问题ID") |
| | | private Long questionId; |
| | | |
| | | @ApiModelProperty(value = "选项编号") |
| | | @ChineseDescription("选项编号") |
| | | private String itemNo; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel("心理测试题添加编辑-请求") |
| | | public class MentalTestTopicAddUpdateRequest { |
| | | |
| | | @ApiModelProperty(value = "ID(编辑必填)") |
| | | @ChineseDescription("ID(编辑必填)") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "分类") |
| | | @ChineseDescription("分类") |
| | | private String classId; |
| | | |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "简介") |
| | | @ChineseDescription("简介") |
| | | private String intro; |
| | | |
| | | @ApiModelProperty(value = "图片") |
| | | @ChineseDescription("图片") |
| | | private String image; |
| | | |
| | | @ApiModelProperty(value = "测试类型:0免费,1付费") |
| | | @ChineseDescription("测试类型:0免费,1付费") |
| | | private Integer testType; |
| | | |
| | | @ApiModelProperty(value = "测试费用") |
| | | @ChineseDescription("测试费用") |
| | | private BigDecimal testAmount; |
| | | |
| | | @ApiModelProperty(value = "咨询1V1,0无,1有") |
| | | @ChineseDescription("咨询1V1,0无,1有") |
| | | private Integer consultOne; |
| | | |
| | | @ApiModelProperty(value = "咨询费用") |
| | | @ChineseDescription("咨询费用") |
| | | private BigDecimal consultAmount; |
| | | |
| | | @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试") |
| | | @ChineseDescription("结果计算方式:0得分,1选项,2测试") |
| | | private Integer resultCalculateMode; |
| | | |
| | | @ApiModelProperty(value = "测试配置人数") |
| | | @ChineseDescription("测试配置人数") |
| | | private Integer testSetNum; |
| | | |
| | | @ApiModelProperty(value = "测试问题") |
| | | @ChineseDescription("测试问题") |
| | | private List<QuestionRequest> questionList; |
| | | |
| | | @Data |
| | | public static class QuestionRequest { |
| | | @ApiModelProperty(value = "ID(编辑必填)") |
| | | @ChineseDescription("ID(编辑必填)") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "类型:1单选,2多选") |
| | | @ChineseDescription("类型:1单选,2多选") |
| | | private Integer type; |
| | | |
| | | @ApiModelProperty(value = "排序,默认asc") |
| | | @ChineseDescription("排序,默认asc") |
| | | private String itemNo; |
| | | |
| | | @ApiModelProperty(value = "测试问题选项") |
| | | @ChineseDescription("测试问题选项") |
| | | private List<OptionRequest> optionList; |
| | | |
| | | @Data |
| | | public static class OptionRequest { |
| | | @ApiModelProperty(value = "ID(编辑必填)") |
| | | @ChineseDescription("ID(编辑必填)") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | |
| | | @ApiModelProperty(value = "排序(ABCD/1234)") |
| | | @ChineseDescription("排序(ABCD/1234)") |
| | | private String itemNo; |
| | | |
| | | @ApiModelProperty(value = "分值") |
| | | @ChineseDescription("分值") |
| | | private Integer score; |
| | | |
| | | @ApiModelProperty(value = "选项内容") |
| | | @ChineseDescription("选项内容") |
| | | private String content; |
| | | } |
| | | } |
| | | |
| | | @ApiModelProperty(value = "结果区间配置") |
| | | @ChineseDescription("结果区间配置") |
| | | private List<ResultSetRequest> resultSetList; |
| | | |
| | | @Data |
| | | public static class ResultSetRequest { |
| | | @ApiModelProperty(value = "ID(编辑必填)") |
| | | @ChineseDescription("ID(编辑必填)") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "最低分") |
| | | @ChineseDescription("最低分") |
| | | private Integer min; |
| | | |
| | | @ApiModelProperty(value = "最高分") |
| | | @ChineseDescription("最高分") |
| | | private Integer max; |
| | | |
| | | @ApiModelProperty(value = "选项编号") |
| | | @ChineseDescription("选项编号") |
| | | private String itemNo; |
| | | |
| | | @ApiModelProperty(value = "选项名称") |
| | | @ChineseDescription("选项名称") |
| | | private String itemName; |
| | | |
| | | @ApiModelProperty(value = "结果描述") |
| | | @ChineseDescription("结果描述") |
| | | private String content; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | @ApiModel("订单支付回调") |
| | | @Data |
| | | public class OrderPayRequest implements Serializable { |
| | | |
| | | @ApiModelProperty("订单编号") |
| | | private String orderNo; |
| | | |
| | | @ApiModelProperty("交易流水号") |
| | | private String transactionNo; |
| | | |
| | | @ApiModelProperty(value = "订单类型 1-课程,2-咨询") |
| | | private Integer orderType; |
| | | |
| | | @ApiModelProperty(value = "支付方式,1微信,2支付宝") |
| | | @ChineseDescription("支付方式,1微信,2支付宝") |
| | | private String payType; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "门店预约-请求参数") |
| | | public class StoreAppointmentRequest { |
| | | |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "用户姓名") |
| | | @ChineseDescription("用户姓名") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @ApiModel("角色绑定菜单按钮-请求参数") |
| | | @Data |
| | | public class SysRoleBindMenuButtonRequest { |
| | | |
| | | @ApiModelProperty(value = "角色ID") |
| | | @ChineseDescription("角色ID") |
| | | private List<Long> roleIdList; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsSendParam; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel("发送短信-请求参数") |
| | | public class SysSmsSendParamRequest extends SysSmsSendParam { |
| | | |
| | | @ApiModelProperty(value = "手机号") |
| | | @ChineseDescription("手机号") |
| | | private String phone; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsVerifyParam; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel("系统用户修改密码参数") |
| | | public class SysUserEditPwdRequest extends SysSmsVerifyParam { |
| | | |
| | | @ApiModelProperty("原密码") |
| | | @ChineseDescription("原密码") |
| | | private String password; |
| | | |
| | | @ApiModelProperty("新密码") |
| | | @ChineseDescription("新密码") |
| | | private String newPassword; |
| | | |
| | | } |
| | | |
| | | |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "工作人员手机号登录-请求参数") |
| | | public class SysUserPhoneLoginRequest { |
| | | |
| | | @ApiModelProperty(value = "手机号") |
| | | @ChineseDescription("手机号") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "32位小写md5(加密盐+手机号)") |
| | | @ChineseDescription("32位小写md5(加密盐+手机号)") |
| | | private String phoneMd5; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel("系统用户重置密码ById参数") |
| | | public class SysUserResetPwdByIdRequest { |
| | | |
| | | @ApiModelProperty("用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty("新密码(为空手机号后6位)") |
| | | @ChineseDescription("新密码(为空手机号后6位)") |
| | | private String newPassword; |
| | | |
| | | } |
| | | |
| | | |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsVerifyParam; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel("系统用户重置密码参数") |
| | | public class SysUserResetPwdRequest extends SysSmsVerifyParam { |
| | | |
| | | @ApiModelProperty("新密码") |
| | | @ChineseDescription("新密码") |
| | | private String newPassword; |
| | | |
| | | } |
| | | |
| | | |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "修改工作人员信息-请求参数") |
| | | public class SysUserUpdateRequest { |
| | | |
| | | @ApiModelProperty("主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty("昵称") |
| | | @ChineseDescription("昵称") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty("姓名") |
| | | @ChineseDescription("姓名") |
| | | private String realName; |
| | | |
| | | @ApiModelProperty("用户头像") |
| | | @ChineseDescription("用户头像") |
| | | private String avatar; |
| | | |
| | | @ApiModelProperty("生日(yyyy-MM-dd)") |
| | | @ChineseDescription("生日(yyyy-MM-dd)") |
| | | private String birthday; |
| | | |
| | | @ApiModelProperty("性别:M-男,F-女") |
| | | @ChineseDescription("性别:M-男,F-女") |
| | | private String sex; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.expression.spel.ast.Literal; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel("报表统计查询") |
| | | public class TotalRequest implements Serializable { |
| | | |
| | | @ApiModelProperty("类型:1日,2周,3月,4年") |
| | | private Integer type; |
| | | |
| | | @ApiModelProperty("开始时间") |
| | | private String beginTime; |
| | | |
| | | @ApiModelProperty("结束时间") |
| | | private String endTime; |
| | | |
| | | @ApiModelProperty("用户id") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty("时间格式,前端不用传") |
| | | private String dateFormat; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.dto.request; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BasePageRequest; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @ApiModel(value = "用户预约记录-请求参数") |
| | | @Data |
| | | public class UserCounsellingOrderReservationRequestDTO extends BasePageRequest { |
| | | |
| | | @ApiModelProperty(value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝") |
| | | @ChineseDescription("预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝") |
| | | private Integer stauts; |
| | | |
| | | @ApiModelProperty(value = "咨询师名称") |
| | | @ChineseDescription("咨询师名称") |
| | | private String counsellingInfoName; |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long customerId; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 地区码表 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2023-05-03 |
| | | */ |
| | | @Data |
| | | @TableName("t_area") |
| | | @ApiModel(value = "地区码表") |
| | | public class Area { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value="id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Integer id; |
| | | /** |
| | | * 父级 |
| | | */ |
| | | @ApiModelProperty(value = "父级") |
| | | @ChineseDescription("父级") |
| | | private Integer pid; |
| | | /** |
| | | * 名称 |
| | | */ |
| | | @ApiModelProperty(value = "名称") |
| | | @ChineseDescription("名称") |
| | | private String name; |
| | | /** |
| | | * 简称 |
| | | */ |
| | | @ApiModelProperty(value = "简称") |
| | | @ChineseDescription("简称") |
| | | private String shortname; |
| | | /** |
| | | * 经度 |
| | | */ |
| | | @ApiModelProperty(value = "经度") |
| | | @ChineseDescription("经度") |
| | | private String longitude; |
| | | /** |
| | | * 纬度 |
| | | */ |
| | | @ApiModelProperty(value = "纬度") |
| | | @ChineseDescription("纬度") |
| | | private String latitude; |
| | | /** |
| | | * 级别 |
| | | */ |
| | | @ApiModelProperty(value = "级别") |
| | | @ChineseDescription("级别") |
| | | private Integer level; |
| | | /** |
| | | * 排序 |
| | | */ |
| | | @ApiModelProperty(value = "排序") |
| | | @ChineseDescription("排序") |
| | | private Integer sort; |
| | | |
| | | @ApiModelProperty(value = "子级地域") |
| | | @ChineseDescription("子级地域") |
| | | @TableField(exist = false) |
| | | private List<Area> childAreaList; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * banner |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_banner") |
| | | @ApiModel(value = "banner") |
| | | public class Banner { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 状态:1上架,2下架 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:1上架,2下架") |
| | | @ChineseDescription("状态:1上架,2下架") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 类型:1首页、2课程、3咨询 |
| | | */ |
| | | @ApiModelProperty(value = "类型:1首页、2课程、3咨询") |
| | | @ChineseDescription("类型:1首页、2课程、3咨询") |
| | | private Integer type; |
| | | /** |
| | | * 名称 |
| | | */ |
| | | @ApiModelProperty(value = "名称") |
| | | @ChineseDescription("名称") |
| | | private String name; |
| | | /** |
| | | * 图片 |
| | | */ |
| | | @ApiModelProperty(value = "图片") |
| | | @ChineseDescription("图片") |
| | | private String image; |
| | | /** |
| | | * 跳转模块:0不跳转,1心理测试,2课程,3咨询 |
| | | */ |
| | | @TableField("jump_module") |
| | | @ApiModelProperty(value = "跳转模块:0不跳转,1心理测试,2课程,3咨询") |
| | | @ChineseDescription("跳转模块:0不跳转,1心理测试,2课程,3咨询") |
| | | private Integer jumpModule; |
| | | /** |
| | | * 跳转页面,1主页,2详情页 |
| | | */ |
| | | @TableField("jump_page") |
| | | @ApiModelProperty(value = "跳转页面,1主页,2详情页") |
| | | @ChineseDescription("跳转页面,1主页,2详情页") |
| | | private Integer jumpPage; |
| | | /** |
| | | * 跳转ID |
| | | */ |
| | | @TableField("jump_id") |
| | | @ApiModelProperty(value = "跳转ID") |
| | | @ChineseDescription("跳转ID") |
| | | private Long jumpId; |
| | | /** |
| | | * 排序,默认desc |
| | | */ |
| | | @ApiModelProperty(value = "排序,默认desc") |
| | | @ChineseDescription("排序,默认desc") |
| | | private Integer sort; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 合同签订记录 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_contract_record") |
| | | @ApiModel(value = "合同签订记录") |
| | | public class ContractRecord { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 合同内容 |
| | | */ |
| | | @TableField("contract_content") |
| | | @ApiModelProperty(value = "合同内容") |
| | | @ChineseDescription("合同内容") |
| | | private String contractContent; |
| | | /** |
| | | * 签订时间 |
| | | */ |
| | | @TableField("signing_time") |
| | | @ApiModelProperty(value = "签订时间") |
| | | @ChineseDescription("签订时间") |
| | | private Date signingTime; |
| | | /** |
| | | * 签字图片 |
| | | */ |
| | | @TableField("sign_url") |
| | | @ApiModelProperty(value = "签字图片") |
| | | @ChineseDescription("签字图片") |
| | | private String signUrl; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.TimeConfigDTO; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询师信息 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_info") |
| | | @ApiModel(value = "咨询师信息") |
| | | public class CounsellingInfo { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询师id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "咨询师id") |
| | | @ChineseDescription("咨询师id") |
| | | private Long userId; |
| | | /** |
| | | * 咨询师类型 1-首席咨询师,2-明星咨询师 |
| | | */ |
| | | @TableField("counselling_type") |
| | | @ApiModelProperty(value = "咨询师类型 1-首席咨询师,2-明星咨询师") |
| | | @ChineseDescription("咨询师类型 1-首席咨询师,2-明星咨询师") |
| | | private Integer counsellingType; |
| | | /** |
| | | * 擅长领域标签ids |
| | | */ |
| | | @TableField("counselling_tag_ids") |
| | | @ApiModelProperty(value = "擅长领域标签ids") |
| | | @ChineseDescription("擅长领域标签ids") |
| | | private String counsellingTagIds; |
| | | /** |
| | | * 资质简介 |
| | | */ |
| | | @TableField("qualification_introduction") |
| | | @ApiModelProperty(value = "资质简介") |
| | | @ChineseDescription("资质简介") |
| | | private String qualificationIntroduction; |
| | | /** |
| | | * 首次咨询价格 |
| | | */ |
| | | @TableField("frist_price") |
| | | @ApiModelProperty(value = "首次咨询价格") |
| | | @ChineseDescription("首次咨询价格") |
| | | private BigDecimal fristPrice; |
| | | /** |
| | | * 咨询师封面图url |
| | | */ |
| | | @TableField("cover_image_url") |
| | | @ApiModelProperty(value = "咨询师封面图url") |
| | | @ChineseDescription("咨询师封面图url") |
| | | private String coverImageUrl; |
| | | /** |
| | | * 咨询师详细图url |
| | | */ |
| | | @TableField("detail_url") |
| | | @ApiModelProperty(value = "咨询师详细图url") |
| | | @ChineseDescription("咨询师详细图url") |
| | | private String detailUrl; |
| | | /** |
| | | * 个人简介 |
| | | */ |
| | | @TableField("personal_profile") |
| | | @ApiModelProperty(value = "个人简介") |
| | | @ChineseDescription("个人简介") |
| | | private String personalProfile; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @TableField("update_user") |
| | | @ApiModelProperty(value = "更新人") |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | /** |
| | | * 总评分 |
| | | */ |
| | | @TableField("total_score") |
| | | @ApiModelProperty(value = "总评分") |
| | | @ChineseDescription("总评分") |
| | | private BigDecimal totalScore; |
| | | /** |
| | | * 上架状态 1-上架,2-下架 |
| | | */ |
| | | @TableField("listing_status") |
| | | @ApiModelProperty(value = "上架状态 1-上架,2-下架") |
| | | @ChineseDescription("上架状态 1-上架,2-下架") |
| | | private Integer listingStatus; |
| | | // /** |
| | | // * 预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推 |
| | | // */ |
| | | // @ApiModelProperty(value = "预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推") |
| | | // @ChineseDescription("预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推") |
| | | // private String weeks; |
| | | // /** |
| | | // * 时间配置集合11:00,12:00 等 |
| | | // */ |
| | | // @TableField("time_points") |
| | | // @ApiModelProperty(value = "时间配置集合11:00-12:00,10:00-11:00 等") |
| | | // @ChineseDescription("时间配置集合11:00-12:00,10:00-11:00 等") |
| | | // private String timePoints; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "咨询师名称") |
| | | @ChineseDescription("咨询师名称") |
| | | private String userName; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "咨询套餐信息") |
| | | @ChineseDescription("咨询套餐信息") |
| | | private List<CounsellingSetMeal> counsellingSetMealList; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "擅长领域标签名称S") |
| | | @ChineseDescription("擅长领域标签名称S") |
| | | private String counsellingTagNames; |
| | | |
| | | @TableField("time_config") |
| | | @ApiModelProperty(value = "预约时间配置") |
| | | @ChineseDescription("预约时间配置") |
| | | private String timeConfig; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "预约时间配置集合") |
| | | @ChineseDescription("预约时间配置集合") |
| | | private List<TimeConfigDTO> timeConfigDTOList; |
| | | |
| | | |
| | | public void setTimeConfigDTOList(List<TimeConfigDTO> timeConfigDTOList) { |
| | | if (CollectionUtil.isNotEmpty(timeConfigDTOList)){ |
| | | this.timeConfig = JSONUtil.toJsonStr(timeConfigDTOList); |
| | | } |
| | | this.timeConfigDTOList = timeConfigDTOList; |
| | | } |
| | | |
| | | public List<TimeConfigDTO> getTimeConfigDTOList() { |
| | | if (StrUtil.isNotBlank(this.timeConfig)){ |
| | | return JSONUtil.toList(timeConfig,TimeConfigDTO.class); |
| | | } |
| | | return timeConfigDTOList; |
| | | } |
| | | |
| | | @TableField("sort") |
| | | @ApiModelProperty(value = "排序字段") |
| | | private Integer sort; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询订单信息 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_order") |
| | | @ApiModel(value = "咨询订单信息") |
| | | public class CounsellingOrder implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询id |
| | | */ |
| | | @TableField("counselling_info_id") |
| | | @ApiModelProperty(value = "咨询id") |
| | | @ChineseDescription("咨询id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 咨询顾问id |
| | | */ |
| | | @TableField("consultant_user_id") |
| | | @ApiModelProperty(value = "咨询顾问id") |
| | | @ChineseDescription("咨询顾问id") |
| | | private Long consultantUserId; |
| | | /** |
| | | * 陪护教练id |
| | | */ |
| | | @TableField("companion_user_id") |
| | | @ApiModelProperty(value = "陪护教练id") |
| | | @ChineseDescription("陪护教练id") |
| | | private Long companionUserId; |
| | | /** |
| | | * 订单类型 1-首次咨询,2-咨询疗程,3-课程续费 |
| | | */ |
| | | @TableField("order_type") |
| | | @ApiModelProperty(value = "订单类型 1-首次咨询,2-咨询疗程,3-课程续费") |
| | | @ChineseDescription("订单类型 1-首次咨询,2-咨询疗程,3-课程续费") |
| | | private Integer orderType; |
| | | /** |
| | | * 联系电话 |
| | | */ |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | /** |
| | | * 有效开始时间 |
| | | */ |
| | | @TableField("effective_begin_time") |
| | | @ApiModelProperty(value = "有效开始时间") |
| | | @ChineseDescription("有效开始时间") |
| | | private Date effectiveBeginTime; |
| | | /** |
| | | * 有效结束时间 |
| | | */ |
| | | @TableField("effective_end_time") |
| | | @ApiModelProperty(value = "有效结束时间") |
| | | @ChineseDescription("有效结束时间") |
| | | private Date effectiveEndTime; |
| | | /** |
| | | * 咨询套餐id |
| | | */ |
| | | @TableField("counselling_set_meal_id") |
| | | @ApiModelProperty(value = "咨询套餐id") |
| | | @ChineseDescription("咨询套餐id") |
| | | private Long counsellingSetMealId; |
| | | /** |
| | | * 咨询套餐json |
| | | */ |
| | | @TableField("set_meal_json") |
| | | @ApiModelProperty(value = "咨询套餐json") |
| | | @ChineseDescription("咨询套餐json") |
| | | private String setMealJson; |
| | | /** |
| | | * 课时数 |
| | | */ |
| | | @TableField("class_hours") |
| | | @ApiModelProperty(value = "课时数") |
| | | @ChineseDescription("课时数") |
| | | private Integer classHours; |
| | | /** |
| | | * 剩余课时数 |
| | | */ |
| | | @TableField("residue_class_hours") |
| | | @ApiModelProperty(value = "剩余课时数") |
| | | @ChineseDescription("剩余课时数") |
| | | private Integer residueClassHours; |
| | | /** |
| | | * 个人信息 |
| | | */ |
| | | @TableField("user_info_json") |
| | | @ApiModelProperty(value = "个人信息") |
| | | @ChineseDescription("个人信息") |
| | | private String userInfoJson; |
| | | /** |
| | | * 状态:0待支付,1已支付,2已完成,9取消,10退款 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:0待支付,1已支付,2已完成,9取消,10退款") |
| | | @ChineseDescription("状态:0待支付,1已支付,2已完成,9取消,10退款") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | |
| | | /** |
| | | * 订单编号 |
| | | */ |
| | | @TableField("order_no") |
| | | @ApiModelProperty(value = "订单编号") |
| | | @ChineseDescription("订单编号") |
| | | private String orderNo; |
| | | /** |
| | | * 订单金额 |
| | | */ |
| | | @TableField("order_amount") |
| | | @ApiModelProperty(value = "订单金额") |
| | | @ChineseDescription("订单金额") |
| | | private BigDecimal orderAmount; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @TableField("pay_amount") |
| | | @ApiModelProperty(value = "支付金额") |
| | | @ChineseDescription("支付金额") |
| | | private BigDecimal payAmount; |
| | | /** |
| | | * 支付时间 |
| | | */ |
| | | @TableField("pay_time") |
| | | @ApiModelProperty(value = "支付时间") |
| | | @ChineseDescription("支付时间") |
| | | private Date payTime; |
| | | /** |
| | | * 支付方式,1微信,2支付宝 |
| | | */ |
| | | @TableField("pay_type") |
| | | @ApiModelProperty(value = "支付方式,1微信,2支付宝") |
| | | @ChineseDescription("支付方式,1微信,2支付宝") |
| | | private String payType; |
| | | /** |
| | | * 交易号 |
| | | */ |
| | | @TableField("transaction_no") |
| | | @ApiModelProperty(value = "交易号") |
| | | @ChineseDescription("交易号") |
| | | private String transactionNo; |
| | | /** |
| | | * 退款金额 |
| | | */ |
| | | @TableField("refund_amount") |
| | | @ApiModelProperty(value = "退款金额") |
| | | @ChineseDescription("退款金额") |
| | | private BigDecimal refundAmount; |
| | | /** |
| | | * 退款时间 |
| | | */ |
| | | @TableField("refund_time") |
| | | @ApiModelProperty(value = "退款时间") |
| | | @ChineseDescription("退款时间") |
| | | private Date refundTime; |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @ApiModelProperty("创建时间") |
| | | @TableField(value = "create_time", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @ApiModelProperty("创建人") |
| | | @TableField(value = "create_user", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @ApiModelProperty("更新时间") |
| | | @TableField(value = "update_time", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @ApiModelProperty("更新人") |
| | | @TableField(value = "update_user", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | |
| | | |
| | | @TableField("first_appointment_date") |
| | | @ApiModelProperty("首次咨询预约日期") |
| | | private Date firstAppointmentDate; |
| | | |
| | | @TableField("first_appointment_times") |
| | | @ApiModelProperty("首次预约时间点 10:00-11:00") |
| | | private String firstAppointmentTimes; |
| | | |
| | | @TableField("cancel_time") |
| | | @ApiModelProperty("取消时间") |
| | | private Date cancelTime; |
| | | |
| | | @TableField("cancel_remark") |
| | | @ApiModelProperty("取消说明") |
| | | private String cancelRemark; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("套餐对象信息") |
| | | private CounsellingSetMeal counsellingSetMeal; |
| | | |
| | | public CounsellingSetMeal getCounsellingSetMeal() { |
| | | if (StrUtil.isNotBlank(this.setMealJson)){ |
| | | return JSONUtil.toBean(this.setMealJson,CounsellingSetMeal.class); |
| | | } |
| | | return counsellingSetMeal; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询订单预约记录 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_order_reservation") |
| | | @ApiModel(value = "咨询订单预约记录") |
| | | public class CounsellingOrderReservation implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询id |
| | | */ |
| | | @TableField("counselling_info_id") |
| | | @ApiModelProperty(value = "咨询id") |
| | | @ChineseDescription("咨询id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 咨询顾问id |
| | | */ |
| | | @TableField("consultant_user_id") |
| | | @ApiModelProperty(value = "咨询顾问id") |
| | | @ChineseDescription("咨询顾问id") |
| | | private Long consultantUserId; |
| | | /** |
| | | * 陪护教练id |
| | | */ |
| | | @TableField("companion_user_id") |
| | | @ApiModelProperty(value = "陪护教练id") |
| | | @ChineseDescription("陪护教练id") |
| | | private Long companionUserId; |
| | | /** |
| | | * 订单id |
| | | */ |
| | | @TableField("counselling_order_id") |
| | | @ApiModelProperty(value = "订单id") |
| | | @ChineseDescription("订单id") |
| | | private Long counsellingOrderId; |
| | | /** |
| | | * 预约开始时间点 |
| | | */ |
| | | @TableField("reservation_begin_time") |
| | | @ApiModelProperty(value = "预约开始时间点") |
| | | @ChineseDescription("预约开始时间点") |
| | | private Date reservationBeginTime; |
| | | /** |
| | | * 预约结束时间点 |
| | | */ |
| | | @TableField("reservation_end_time") |
| | | @ApiModelProperty(value = "预约结束时间点") |
| | | @ChineseDescription("预约结束时间点") |
| | | private Date reservationEndTime; |
| | | /** |
| | | * 预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝 |
| | | */ |
| | | @ApiModelProperty(value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝") |
| | | @ChineseDescription("预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝") |
| | | private Integer stauts; |
| | | /** |
| | | * 预约创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "预约创建时间") |
| | | @ChineseDescription("预约创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 服务开始时间 |
| | | */ |
| | | @TableField("service_begin_time") |
| | | @ApiModelProperty(value = "服务开始时间") |
| | | @ChineseDescription("服务开始时间") |
| | | private Date serviceBeginTime; |
| | | /** |
| | | * 服务结束时间 |
| | | */ |
| | | @TableField("service_end_time") |
| | | @ApiModelProperty(value = "服务结束时间") |
| | | @ChineseDescription("服务结束时间") |
| | | private Date serviceEndTime; |
| | | /** |
| | | * 服务审批时间 |
| | | */ |
| | | @TableField("service_approve_time") |
| | | @ApiModelProperty(value = "服务审批时间") |
| | | @ChineseDescription("服务审批时间") |
| | | private Date serviceApproveTime; |
| | | /** |
| | | * 服务完成时间 |
| | | */ |
| | | @TableField("servie_complete_time") |
| | | @ApiModelProperty(value = "服务完成时间") |
| | | @ChineseDescription("服务完成时间") |
| | | private Date servieCompleteTime; |
| | | /** |
| | | * 本次耗费课时数 |
| | | */ |
| | | @TableField("consume_course_hour") |
| | | @ApiModelProperty(value = "本次耗费课时数") |
| | | @ChineseDescription("本次耗费课时数") |
| | | private Integer consumeCourseHour; |
| | | |
| | | @TableField("reservation_type") |
| | | @ApiModelProperty(value = "预约类型 1-首次面诊,2-咨询疗程") |
| | | @ChineseDescription("预约类型 1-首次面诊,2-咨询疗程") |
| | | private Integer reservationType; |
| | | |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @ApiModelProperty("更新时间") |
| | | @TableField(value = "update_time", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @ApiModelProperty("更新人") |
| | | @TableField(value = "update_user", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | |
| | | @TableField("remark") |
| | | @ApiModelProperty("备注") |
| | | @ChineseDescription("备注") |
| | | private String remark; |
| | | |
| | | @TableField("cancle_reason") |
| | | @ApiModelProperty("取消理由") |
| | | @ChineseDescription("取消理由") |
| | | private String cancleReason; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "咨询师名称") |
| | | @ChineseDescription("咨询师名称") |
| | | private String counsellingInfoName; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "用户名称") |
| | | @ChineseDescription("用户名称") |
| | | private String userName; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "作业数量") |
| | | @ChineseDescription("作业数量") |
| | | private Long workNum; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询记录信息 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_reservation_record") |
| | | @ApiModel(value = "咨询记录信息") |
| | | public class CounsellingReservationRecord { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询订单预约id |
| | | */ |
| | | @TableField("counselling_order_reservation_id") |
| | | @ApiModelProperty(value = "咨询订单预约id") |
| | | @ChineseDescription("咨询订单预约id") |
| | | private Long counsellingOrderReservationId; |
| | | /** |
| | | * 内容 |
| | | */ |
| | | @ApiModelProperty(value = "内容") |
| | | @ChineseDescription("内容") |
| | | private String content; |
| | | /** |
| | | * 图片 |
| | | */ |
| | | @TableField("image_urls") |
| | | @ApiModelProperty(value = "图片") |
| | | @ChineseDescription("图片") |
| | | private String imageUrls; |
| | | |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @ApiModelProperty("创建时间") |
| | | @TableField(value = "create_time", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @ApiModelProperty("创建人") |
| | | @TableField(value = "create_user", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @ApiModelProperty("更新时间") |
| | | @TableField(value = "update_time", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @ApiModelProperty("更新人") |
| | | @TableField(value = "update_user", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询作业 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_reservation_work") |
| | | @ApiModel(value = "咨询作业") |
| | | public class CounsellingReservationWork { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询订单预约id |
| | | */ |
| | | @TableField("counselling_order_reservation_id") |
| | | @ApiModelProperty(value = "咨询订单预约id") |
| | | @ChineseDescription("咨询订单预约id") |
| | | private Long counsellingOrderReservationId; |
| | | /** |
| | | * 作业内容 |
| | | */ |
| | | @TableField("work_content") |
| | | @ApiModelProperty(value = "作业内容") |
| | | @ChineseDescription("作业内容") |
| | | private String workContent; |
| | | /** |
| | | * 作业图片 |
| | | */ |
| | | @TableField("work_image_urls") |
| | | @ApiModelProperty(value = "作业图片") |
| | | @ChineseDescription("作业图片") |
| | | private String workImageUrls; |
| | | |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @ApiModelProperty("创建时间") |
| | | @TableField(value = "create_time", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @ApiModelProperty("创建人") |
| | | @TableField(value = "create_user", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @ApiModelProperty("更新时间") |
| | | @TableField(value = "update_time", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @ApiModelProperty("更新人") |
| | | @TableField(value = "update_user", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询套餐信息 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_set_meal") |
| | | @ApiModel(value = "咨询套餐信息") |
| | | public class CounsellingSetMeal { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询师信息id |
| | | */ |
| | | @TableField("counselling_info_id") |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 套餐类型 1-咨询疗程,2-续课 |
| | | */ |
| | | @TableField("set_meal_type") |
| | | @ApiModelProperty(value = "套餐类型 1-咨询疗程,2-续课") |
| | | @ChineseDescription("套餐类型 1-咨询疗程,2-续课") |
| | | private Integer setMealType; |
| | | /** |
| | | * 有效期 |
| | | */ |
| | | @TableField("period_validity") |
| | | @ApiModelProperty(value = "有效期") |
| | | @ChineseDescription("有效期") |
| | | private Integer periodValidity; |
| | | /** |
| | | * 课时数 |
| | | */ |
| | | @TableField("class_hours") |
| | | @ApiModelProperty(value = "课时数") |
| | | @ChineseDescription("课时数") |
| | | private Integer classHours; |
| | | /** |
| | | * 是否赠送陪护 1-是,0-否 |
| | | */ |
| | | @TableField("is_give") |
| | | @ApiModelProperty(value = "是否赠送陪护 1-是,0-否") |
| | | @ChineseDescription("是否赠送陪护 1-是,0-否") |
| | | private Integer isGive; |
| | | /** |
| | | * 价格 |
| | | */ |
| | | @ApiModelProperty(value = "价格") |
| | | @ChineseDescription("价格") |
| | | private BigDecimal price; |
| | | /** |
| | | * 原价 |
| | | */ |
| | | @TableField("original_price") |
| | | @ApiModelProperty(value = "原价") |
| | | @ChineseDescription("原价") |
| | | private BigDecimal originalPrice; |
| | | |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "有效期时间天") |
| | | @ChineseDescription("有效期时间天") |
| | | private Integer periodValidityDay; |
| | | |
| | | public Integer getPeriodValidityDay() { |
| | | //咨询疗程 |
| | | if (this.setMealType != null && this.setMealType.intValue() ==1){ |
| | | return this.periodValidity*30; |
| | | } |
| | | return periodValidity; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询预约特殊时间配置 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_special_time_config") |
| | | @ApiModel(value = "咨询预约特殊时间配置") |
| | | public class CounsellingSpecialTimeConfig { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询师信息id |
| | | */ |
| | | @TableField("counselling_info_id") |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 特殊日期 yyyy-MM-dd |
| | | */ |
| | | @TableField("special_day") |
| | | @ApiModelProperty(value = "特殊日期 yyyy-MM-dd") |
| | | @ChineseDescription("特殊日期 yyyy-MM-dd") |
| | | private Date specialDay; |
| | | /** |
| | | * 特殊开始时间点 HH:mm |
| | | */ |
| | | @TableField("special_begin_time_point") |
| | | @ApiModelProperty(value = "特殊开始时间点 HH:mm") |
| | | @ChineseDescription("特殊开始时间点 HH:mm") |
| | | private String specialBeginTimePoint; |
| | | /** |
| | | * 特殊结束时间点 HH:mm |
| | | */ |
| | | @TableField("special_end_time_point") |
| | | @ApiModelProperty(value = "特殊结束时间点 HH:mm") |
| | | @ChineseDescription("特殊结束时间点 HH:mm") |
| | | private String specialEndTimePoint; |
| | | /** |
| | | * 是否取消当天 1-是 0-否 |
| | | */ |
| | | @TableField("is_cancel_day") |
| | | @ApiModelProperty(value = "是否取消当天 1-是 0-否") |
| | | @ChineseDescription("是否取消当天 1-是 0-否") |
| | | private Integer isCancelDay; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询擅长领域标签表 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_tag") |
| | | @ApiModel(value = "咨询擅长领域标签表") |
| | | public class CounsellingTag extends BaseRequest { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 标签名称 |
| | | */ |
| | | @TableField("tag_name") |
| | | @ApiModelProperty(value = "标签名称") |
| | | @ChineseDescription("标签名称") |
| | | private String tagName; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @TableField("update_user") |
| | | @ApiModelProperty(value = "更新人") |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询预约时间配置 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_time_config") |
| | | @ApiModel(value = "咨询预约时间配置") |
| | | public class CounsellingTimeConfig { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询师信息id |
| | | */ |
| | | @TableField("counselling_info_id") |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 模块编号 |
| | | */ |
| | | @TableField("module_no") |
| | | @ApiModelProperty(value = "模块编号") |
| | | @ChineseDescription("模块编号") |
| | | private String moduleNo; |
| | | /** |
| | | * 星期几 |
| | | */ |
| | | @TableField("week_day") |
| | | @ApiModelProperty(value = "星期几") |
| | | @ChineseDescription("星期几") |
| | | private Integer weekDay; |
| | | /** |
| | | * 时间点 HH:mm |
| | | */ |
| | | @TableField("begin_time_point") |
| | | @ApiModelProperty(value = "时间点 HH:mm") |
| | | @ChineseDescription("时间点 HH:mm") |
| | | private String beginTimePoint; |
| | | /** |
| | | * 结束时间点 |
| | | */ |
| | | @TableField("end_time_point") |
| | | @ApiModelProperty(value = "结束时间点") |
| | | @ChineseDescription("结束时间点") |
| | | private String endTimePoint; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CustomerUpdateRequest; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import java.util.Date; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import java.io.Serializable; |
| | | import lombok.Data; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户咨询师课时信息 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-02-29 |
| | | */ |
| | | @Data |
| | | @TableName("t_counselling_user") |
| | | @ApiModel(value = "用户咨询师课时信息") |
| | | public class CounsellingUser { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询id |
| | | */ |
| | | @TableField("counselling_info_id") |
| | | @ApiModelProperty(value = "咨询id") |
| | | @ChineseDescription("咨询id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 咨询顾问id |
| | | */ |
| | | @TableField("consultant_user_id") |
| | | @ApiModelProperty(value = "咨询顾问id") |
| | | @ChineseDescription("咨询顾问id") |
| | | private Long consultantUserId; |
| | | /** |
| | | * 陪护教练id |
| | | */ |
| | | @TableField("companion_user_id") |
| | | @ApiModelProperty(value = "陪护教练id") |
| | | @ChineseDescription("陪护教练id") |
| | | private Long companionUserId; |
| | | /** |
| | | * 联系电话 |
| | | */ |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | /** |
| | | * 有效开始时间 |
| | | */ |
| | | @TableField("effective_begin_time") |
| | | @ApiModelProperty(value = "有效开始时间") |
| | | @ChineseDescription("有效开始时间") |
| | | private Date effectiveBeginTime; |
| | | /** |
| | | * 有效结束时间 |
| | | */ |
| | | @TableField("effective_end_time") |
| | | @ApiModelProperty(value = "有效结束时间") |
| | | @ChineseDescription("有效结束时间") |
| | | private Date effectiveEndTime; |
| | | /** |
| | | * 课时数 |
| | | */ |
| | | @TableField("class_hours") |
| | | @ApiModelProperty(value = "课时数") |
| | | @ChineseDescription("课时数") |
| | | private Integer classHours; |
| | | /** |
| | | * 剩余课时数 |
| | | */ |
| | | @TableField("residue_class_hours") |
| | | @ApiModelProperty(value = "剩余课时数") |
| | | @ChineseDescription("剩余课时数") |
| | | private Integer residueClassHours; |
| | | /** |
| | | * 个人信息 |
| | | */ |
| | | @TableField("user_info_json") |
| | | @ApiModelProperty(value = "个人信息") |
| | | @ChineseDescription("个人信息") |
| | | private String userInfoJson; |
| | | /** |
| | | * 状态:0待支付,1已支付,2已完成,9取消,10退款 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:0待支付,1已支付,2已完成,9取消,10退款") |
| | | @ChineseDescription("状态:0待支付,1已支付,2已完成,9取消,10退款") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @TableField("update_user") |
| | | @ApiModelProperty(value = "更新人") |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | /** |
| | | * 首次咨询预约日期 |
| | | */ |
| | | @TableField("first_appointment_date") |
| | | @ApiModelProperty(value = "首次咨询预约日期") |
| | | @ChineseDescription("首次咨询预约日期") |
| | | private Date firstAppointmentDate; |
| | | /** |
| | | * 首次预约时间点 10:00-11:00 |
| | | */ |
| | | @TableField("first_appointment_times") |
| | | @ApiModelProperty(value = "首次预约时间点 10:00-11:00") |
| | | @ChineseDescription("首次预约时间点 10:00-11:00") |
| | | private String firstAppointmentTimes; |
| | | /** |
| | | * 是否完成首次咨询 1-是,0-否 |
| | | */ |
| | | @TableField("is_first_appointment") |
| | | @ApiModelProperty(value = "首次咨询预约状态 1-未预约首次咨询,2-已预约首次咨询,等待咨询,3-已完成首次预约咨询") |
| | | @ChineseDescription("首次咨询预约状态 1-未预约首次咨询,2-已预约首次咨询,等待咨询,3-已完成首次预约咨询") |
| | | private Integer isFirstAppointment; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("最近预约时间") |
| | | private String lastTime; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("咨询师封面图url") |
| | | private String coverImageUrl; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("上架状态 1-上架,2-下架") |
| | | private Integer listingStatus; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("咨询师名称") |
| | | private String counsellingName; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "咨询师类型 1-首席咨询师,2-明星咨询师") |
| | | @ChineseDescription("咨询师类型 1-首席咨询师,2-明星咨询师") |
| | | private Integer counsellingType; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("现状用户信息") |
| | | private CustomerUpdateRequest customerUpdateRequest; |
| | | |
| | | @ApiModelProperty("用户姓名") |
| | | @TableField(exist = false) |
| | | private String userName; |
| | | |
| | | @TableField("cancel_num") |
| | | @ApiModelProperty("咨询预约取消次数") |
| | | private Integer cancelNum; |
| | | |
| | | |
| | | public CustomerUpdateRequest getCustomerUpdateRequest() { |
| | | if (StrUtil.isNotBlank(this.getUserInfoJson())){ |
| | | return JSONUtil.toBean(this.getUserInfoJson(), CustomerUpdateRequest.class); |
| | | } |
| | | return customerUpdateRequest; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程管理 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_course") |
| | | @ApiModel(value = "课程管理") |
| | | public class Course extends BaseRequest { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 课程/章节名称 |
| | | */ |
| | | @TableField("course_name") |
| | | @ApiModelProperty(value = "课程名称") |
| | | @ChineseDescription("课程名称") |
| | | private String courseName; |
| | | /** |
| | | * 课程标签id串,逗号拼接 |
| | | */ |
| | | @TableField("course_tag_ids") |
| | | @ApiModelProperty(value = "课程标签id串,逗号拼接") |
| | | @ChineseDescription("课程标签id串,逗号拼接") |
| | | private String courseTagIds; |
| | | /** |
| | | * 课程简介 |
| | | */ |
| | | @TableField("course_introduction") |
| | | @ApiModelProperty(value = "课程简介") |
| | | @ChineseDescription("课程简介") |
| | | private String courseIntroduction; |
| | | /** |
| | | * 课程有效期 |
| | | */ |
| | | @TableField("course_validity") |
| | | @ApiModelProperty(value = "课程有效期") |
| | | @ChineseDescription("课程有效期") |
| | | private Integer courseValidity; |
| | | /** |
| | | * 价格 |
| | | */ |
| | | @ApiModelProperty(value = "价格") |
| | | @ChineseDescription("价格") |
| | | private BigDecimal price; |
| | | /** |
| | | * 原价 |
| | | */ |
| | | @TableField("original_price") |
| | | @ApiModelProperty(value = "原价") |
| | | @ChineseDescription("原价") |
| | | private BigDecimal originalPrice; |
| | | /** |
| | | * 课程封面图 |
| | | */ |
| | | @TableField("cover_picture_url") |
| | | @ApiModelProperty(value = "课程封面图") |
| | | @ChineseDescription("课程封面图") |
| | | private String coverPictureUrl; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @TableField("update_user") |
| | | @ApiModelProperty(value = "更新人") |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | /** |
| | | * 课程详细图 |
| | | */ |
| | | @TableField("course_detail_url") |
| | | @ApiModelProperty(value = "课程详细图") |
| | | @ChineseDescription("课程详细图") |
| | | private String courseDetailUrl; |
| | | /** |
| | | * 课程详细内容 |
| | | */ |
| | | @TableField("course_content") |
| | | @ApiModelProperty(value = "课程详细内容") |
| | | @ChineseDescription("课程详细内容") |
| | | private String courseContent; |
| | | /** |
| | | * 总评分 |
| | | */ |
| | | @TableField("total_score") |
| | | @ApiModelProperty(value = "总评分") |
| | | @ChineseDescription("总评分") |
| | | private BigDecimal totalScore; |
| | | /** |
| | | * 上架状态 1-上架,2-下架 |
| | | */ |
| | | @TableField("listing_status") |
| | | @ApiModelProperty(value = "上架状态 1-上架,2-下架") |
| | | @ChineseDescription("上架状态 1-上架,2-下架") |
| | | private Integer listingStatus; |
| | | |
| | | @TableField("total_time") |
| | | @ApiModelProperty(value = "课程总时长") |
| | | @ChineseDescription("课程总时长") |
| | | private Long totalTime; |
| | | |
| | | @TableField("buy_num") |
| | | @ApiModelProperty(value = "已购买人数") |
| | | @ChineseDescription("已购买人数") |
| | | private Integer buyNum; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "章节集合") |
| | | @ChineseDescription("章节集合") |
| | | private List<CourseChapter> courseChapterList; |
| | | |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "课程标签名称集合") |
| | | @ChineseDescription("课程标签名称集合") |
| | | private String courseTagNames; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "课程内容信息(表格显示用)") |
| | | @ChineseDescription("课程内容信息(表格显示用)") |
| | | private String courseContentInfos; |
| | | |
| | | @TableField("sort") |
| | | @ApiModelProperty(value = "排序字段") |
| | | private Integer sort; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "课程订单id") |
| | | @ChineseDescription("课程订单id") |
| | | private Long courseOrderId ; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 章节管理 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_course_chapter") |
| | | @ApiModel(value = "章节管理") |
| | | public class CourseChapter implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 课程id |
| | | */ |
| | | @TableField("course_id") |
| | | @ApiModelProperty(value = "课程id") |
| | | @ChineseDescription("课程id") |
| | | private Long courseId; |
| | | /** |
| | | * 章节名称 |
| | | */ |
| | | @TableField("chapter_name") |
| | | @ApiModelProperty(value = "章节名称") |
| | | @ChineseDescription("章节名称") |
| | | private String chapterName; |
| | | /** |
| | | * 章节父级id 0-代表最高级 |
| | | */ |
| | | @TableField("parent_id") |
| | | @ApiModelProperty(value = "章节父级id 0-代表最高级") |
| | | @ChineseDescription("章节父级id 0-代表最高级") |
| | | private Long parentId; |
| | | /** |
| | | * 视频名称 |
| | | */ |
| | | @TableField("video_name") |
| | | @ApiModelProperty(value = "视频名称") |
| | | @ChineseDescription("视频名称") |
| | | private String videoName; |
| | | /** |
| | | * 视频地址 |
| | | */ |
| | | @TableField("video_url") |
| | | @ApiModelProperty(value = "视频地址") |
| | | @ChineseDescription("视频地址") |
| | | private String videoUrl; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @TableField("update_user") |
| | | @ApiModelProperty(value = "更新人") |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | |
| | | |
| | | @TableField("minute_num") |
| | | @ApiModelProperty(value = "分钟数") |
| | | @ChineseDescription("分钟数") |
| | | private Integer minuteNum; |
| | | |
| | | @TableField("second_num") |
| | | @ApiModelProperty(value = "秒数") |
| | | @ChineseDescription("秒数") |
| | | private Integer secondNum; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "章节子集") |
| | | @ChineseDescription("章节子集") |
| | | private List<CourseChapter> childList; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "总秒数") |
| | | @ChineseDescription("总秒数") |
| | | private Integer totalSecondNum = 0; |
| | | |
| | | public Integer getTotalSecondNum() { |
| | | |
| | | if (this.minuteNum != null ){ |
| | | totalSecondNum = minuteNum *60; |
| | | } |
| | | if (this.secondNum != null){ |
| | | totalSecondNum = totalSecondNum +secondNum; |
| | | } |
| | | return totalSecondNum; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程订单信息 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_course_order") |
| | | @ApiModel(value = "课程订单信息") |
| | | public class CourseOrder { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 课程id |
| | | */ |
| | | @TableField("course_id") |
| | | @ApiModelProperty(value = "课程id") |
| | | @ChineseDescription("课程id") |
| | | private Long courseId; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 课程顾问id |
| | | */ |
| | | @TableField("course_user_id") |
| | | @ApiModelProperty(value = "课程顾问id") |
| | | @ChineseDescription("课程顾问id") |
| | | private Long courseUserId; |
| | | /** |
| | | * 课程辅导id |
| | | */ |
| | | @TableField("tutoring_user_id") |
| | | @ApiModelProperty(value = "课程辅导id") |
| | | @ChineseDescription("课程辅导id") |
| | | private Long tutoringUserId; |
| | | /** |
| | | * 联系电话 |
| | | */ |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | /** |
| | | * 课程有效开始时间 |
| | | */ |
| | | @TableField("effective_begin_time") |
| | | @ApiModelProperty(value = "课程有效开始时间") |
| | | @ChineseDescription("课程有效开始时间") |
| | | private Date effectiveBeginTime; |
| | | /** |
| | | * 课程有效结束时间 |
| | | */ |
| | | @TableField("effective_end_time") |
| | | @ApiModelProperty(value = "课程有效结束时间") |
| | | @ChineseDescription("课程有效结束时间") |
| | | private Date effectiveEndTime; |
| | | /** |
| | | * 课程总时长 单位S |
| | | */ |
| | | @TableField("total_time") |
| | | @ApiModelProperty(value = "课程总时长 单位S") |
| | | @ChineseDescription("课程总时长 单位S") |
| | | private Long totalTime; |
| | | /** |
| | | * 课程已学时长 |
| | | */ |
| | | @TableField("learned_time") |
| | | @ApiModelProperty(value = "课程已学时长") |
| | | @ChineseDescription("课程已学时长") |
| | | private Long learnedTime; |
| | | /** |
| | | * 状态:0待支付,1已支付,2已过期,9取消,10退款 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:0待支付,1已支付,2已过期,9取消,10退款") |
| | | @ChineseDescription("状态:0待支付,1已支付,2已过期,9取消,10退款") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | |
| | | /** |
| | | * 订单编号 |
| | | */ |
| | | @TableField("order_no") |
| | | @ApiModelProperty(value = "订单编号") |
| | | @ChineseDescription("订单编号") |
| | | private String orderNo; |
| | | /** |
| | | * 订单金额 |
| | | */ |
| | | @TableField("order_amount") |
| | | @ApiModelProperty(value = "订单金额") |
| | | @ChineseDescription("订单金额") |
| | | private BigDecimal orderAmount; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @TableField("pay_amount") |
| | | @ApiModelProperty(value = "支付金额") |
| | | @ChineseDescription("支付金额") |
| | | private BigDecimal payAmount; |
| | | /** |
| | | * 支付时间 |
| | | */ |
| | | @TableField("pay_time") |
| | | @ApiModelProperty(value = "支付时间") |
| | | @ChineseDescription("支付时间") |
| | | private Date payTime; |
| | | /** |
| | | * 支付方式,1微信,2支付宝 |
| | | */ |
| | | @TableField("pay_type") |
| | | @ApiModelProperty(value = "支付方式,1微信,2支付宝") |
| | | @ChineseDescription("支付方式,1微信,2支付宝") |
| | | private String payType; |
| | | /** |
| | | * 交易号 |
| | | */ |
| | | @TableField("transaction_no") |
| | | @ApiModelProperty(value = "交易号") |
| | | @ChineseDescription("交易号") |
| | | private String transactionNo; |
| | | /** |
| | | * 退款金额 |
| | | */ |
| | | @TableField("refund_amount") |
| | | @ApiModelProperty(value = "退款金额") |
| | | @ChineseDescription("退款金额") |
| | | private BigDecimal refundAmount; |
| | | /** |
| | | * 退款时间 |
| | | */ |
| | | @TableField("refund_time") |
| | | @ApiModelProperty(value = "退款时间") |
| | | @ChineseDescription("退款时间") |
| | | private Date refundTime; |
| | | /** |
| | | * 课程信息json |
| | | */ |
| | | @TableField("course_json") |
| | | @ApiModelProperty(value = "课程信息json") |
| | | @ChineseDescription("课程信息json") |
| | | private String courseJson; |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @ApiModelProperty("创建时间") |
| | | @TableField(value = "create_time", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @ApiModelProperty("创建人") |
| | | @TableField(value = "create_user", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @ApiModelProperty("更新时间") |
| | | @TableField(value = "update_time", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @ApiModelProperty("更新人") |
| | | @TableField(value = "update_user", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("课程对象信息") |
| | | @ChineseDescription("课程对象信息") |
| | | private Course course; |
| | | |
| | | @TableField("cancel_time") |
| | | @ApiModelProperty("取消时间") |
| | | private Date cancelTime; |
| | | |
| | | @TableField("cancel_remark") |
| | | @ApiModelProperty("取消说明") |
| | | private String cancelRemark; |
| | | |
| | | public Course getCourse() { |
| | | if (StrUtil.isNotBlank(this.courseJson)){ |
| | | return JSONUtil.toBean(this.courseJson,Course.class); |
| | | } |
| | | |
| | | return course; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程学习笔记 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_course_study_note") |
| | | @ApiModel(value = "课程学习笔记") |
| | | public class CourseStudyNote extends BaseEntity { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 课程id |
| | | */ |
| | | @TableField("course_id") |
| | | @ApiModelProperty(value = "课程id") |
| | | @ChineseDescription("课程id") |
| | | private Long courseId; |
| | | /** |
| | | * 订单id |
| | | */ |
| | | @TableField("course_order_id") |
| | | @ApiModelProperty(value = "订单id") |
| | | @ChineseDescription("订单id") |
| | | private Long courseOrderId; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 笔记内容 |
| | | */ |
| | | @TableField("note_content") |
| | | @ApiModelProperty(value = "笔记内容") |
| | | @ChineseDescription("笔记内容") |
| | | private String noteContent; |
| | | |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程标签 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_course_tag") |
| | | @ApiModel(value = "课程标签") |
| | | public class CourseTag extends BaseRequest { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 标签名称 |
| | | */ |
| | | @TableField("tag_name") |
| | | @ApiModelProperty(value = "标签名称") |
| | | @ChineseDescription("标签名称") |
| | | private String tagName; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @TableField("update_user") |
| | | @ApiModelProperty(value = "更新人") |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程学习记录 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_course_user_learned") |
| | | @ApiModel(value = "课程学习记录") |
| | | public class CourseUserLearned { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 课程id |
| | | */ |
| | | @TableField("course_id") |
| | | @ApiModelProperty(value = "课程id") |
| | | @ChineseDescription("课程id") |
| | | private Long courseId; |
| | | /** |
| | | * 章节id |
| | | */ |
| | | @TableField("course_chapter_id") |
| | | @ApiModelProperty(value = "章节id") |
| | | @ChineseDescription("章节id") |
| | | private Long courseChapterId; |
| | | /** |
| | | * 订单id |
| | | */ |
| | | @TableField("course_order_id") |
| | | @ApiModelProperty(value = "订单id") |
| | | @ChineseDescription("订单id") |
| | | private Long courseOrderId; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 本次学习时长 |
| | | */ |
| | | @TableField("study_time") |
| | | @ApiModelProperty(value = "本次学习时长") |
| | | @ChineseDescription("本次学习时长") |
| | | private Long studyTime; |
| | | /** |
| | | * 课程学习时长 |
| | | */ |
| | | @TableField("course_study_time") |
| | | @ApiModelProperty(value = "课程学习时长") |
| | | @ChineseDescription("课程学习时长") |
| | | private Long courseStudyTime; |
| | | /** |
| | | * 学习开始时间 |
| | | */ |
| | | @TableField("begin_time") |
| | | @ApiModelProperty(value = "学习开始时间") |
| | | @ChineseDescription("学习开始时间") |
| | | private Date beginTime; |
| | | /** |
| | | * 学习结束时间 |
| | | */ |
| | | @TableField("end_time") |
| | | @ApiModelProperty(value = "学习结束时间") |
| | | @ChineseDescription("学习结束时间") |
| | | private Date endTime; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程章节学习进度 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_couser_chapter_learning_rate") |
| | | @ApiModel(value = "课程章节学习进度") |
| | | public class CouserChapterLearningRate { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 课程id |
| | | */ |
| | | @TableField("course_id") |
| | | @ApiModelProperty(value = "课程id") |
| | | @ChineseDescription("课程id") |
| | | private Long courseId; |
| | | /** |
| | | * 章节id |
| | | */ |
| | | @TableField("course_chapter_id") |
| | | @ApiModelProperty(value = "章节id") |
| | | @ChineseDescription("章节id") |
| | | private Long courseChapterId; |
| | | /** |
| | | * 订单id |
| | | */ |
| | | @TableField("course_order_id") |
| | | @ApiModelProperty(value = "订单id") |
| | | @ChineseDescription("订单id") |
| | | private Long courseOrderId; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 课程学习时长 |
| | | */ |
| | | @TableField("course_study_time") |
| | | @ApiModelProperty(value = "课程学习时长 指代总共看课程的时长") |
| | | @ChineseDescription("课程学习时长 指代总共看课程的时长") |
| | | private Long courseStudyTime; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | /** |
| | | * 学习状态 1-学习中,2-学习完成 |
| | | */ |
| | | @TableField("study_status") |
| | | @ApiModelProperty(value = "学习状态 1-学习中,2-学习完成") |
| | | @ChineseDescription("学习状态 1-学习中,2-学习完成") |
| | | private Integer studyStatus; |
| | | |
| | | /** |
| | | * 课程总时长 单位S |
| | | */ |
| | | @TableField("total_time") |
| | | @ApiModelProperty(value = "课程总时长 单位S") |
| | | @ChineseDescription("课程总时长 单位S") |
| | | private Long totalTime; |
| | | /** |
| | | * 课程已学时长 |
| | | */ |
| | | @TableField("learned_time") |
| | | @ApiModelProperty(value = "课程已学时长") |
| | | @ChineseDescription("课程已学时长") |
| | | private Long learnedTime; |
| | | |
| | | @TableField("last_study_time") |
| | | @ApiModelProperty(value = "最新一次学习位置") |
| | | @ChineseDescription("最新一次学习位置") |
| | | private Long lastStudyTime; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 帮助 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_help") |
| | | @ApiModel(value = "帮助") |
| | | public class Help extends BaseRequest { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 状态:1正常,2冻结 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:1正常,2冻结") |
| | | @ChineseDescription("状态:1正常,2冻结") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 排序,默认desc |
| | | */ |
| | | @ApiModelProperty(value = "排序,默认desc") |
| | | @ChineseDescription("排序,默认desc") |
| | | private Integer sort; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 标题 |
| | | */ |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | /** |
| | | * 内容 |
| | | */ |
| | | @ApiModelProperty(value = "内容") |
| | | @ChineseDescription("内容") |
| | | private String content; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息群信息 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("im_group") |
| | | @ApiModel(value = "消息群信息") |
| | | public class ImGroup { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 状态:1正常,2冻结 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:1正常,2冻结") |
| | | @ChineseDescription("状态:1正常,2冻结") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 排序,默认desc |
| | | */ |
| | | @ApiModelProperty(value = "排序,默认desc") |
| | | @ChineseDescription("排序,默认desc") |
| | | private Integer sort; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @TableField("update_user") |
| | | @ApiModelProperty(value = "更新人") |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | /** |
| | | * 群名 |
| | | */ |
| | | @ApiModelProperty(value = "群名") |
| | | @ChineseDescription("群名") |
| | | private String name; |
| | | /** |
| | | * 简介 |
| | | */ |
| | | @ApiModelProperty(value = "简介") |
| | | @ChineseDescription("简介") |
| | | private String intro; |
| | | /** |
| | | * 解散日期 |
| | | */ |
| | | @TableField("disband_date") |
| | | @ApiModelProperty(value = "解散日期") |
| | | @ChineseDescription("解散日期") |
| | | private Date disbandDate; |
| | | /** |
| | | * 群类型:1课程,2咨询 |
| | | */ |
| | | @TableField("group_type") |
| | | @ApiModelProperty(value = "群类型:1课程,2咨询") |
| | | @ChineseDescription("群类型:1课程,2咨询") |
| | | private Integer groupType; |
| | | |
| | | @TableField("order_id") |
| | | @ApiModelProperty(value = "业务订单id") |
| | | @ChineseDescription("业务订单id") |
| | | private Long orderId; |
| | | |
| | | @TableField("last_chat_time") |
| | | @ApiModelProperty(value = "最近聊天时间") |
| | | @ChineseDescription("最近聊天时间") |
| | | private Date lastChatTime; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息群用户 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("im_group_user") |
| | | @ApiModel(value = "消息群用户") |
| | | public class ImGroupUser { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 排序,默认desc |
| | | */ |
| | | @ApiModelProperty(value = "排序,默认desc") |
| | | @ChineseDescription("排序,默认desc") |
| | | private Integer sort; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | /** |
| | | * 用户岗位 |
| | | */ |
| | | @TableField("user_post") |
| | | @ApiModelProperty(value = "用户岗位") |
| | | @ChineseDescription("用户岗位") |
| | | private Long userPost; |
| | | /** |
| | | * 群ID |
| | | */ |
| | | @TableField("group_id") |
| | | @ApiModelProperty(value = "群ID") |
| | | @ChineseDescription("群ID") |
| | | private Long groupId; |
| | | /** |
| | | * 群别名 |
| | | */ |
| | | @TableField("group_alias") |
| | | @ApiModelProperty(value = "群别名") |
| | | @ChineseDescription("群别名") |
| | | private String groupAlias; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息通知 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @TableName("im_notice") |
| | | @ApiModel(value = "消息通知") |
| | | public class ImNotice { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 用户类型:1用户,2工作人员 |
| | | */ |
| | | @TableField("user_type") |
| | | @ApiModelProperty(value = "用户类型:1用户,2工作人员") |
| | | @ChineseDescription("用户类型:1用户,2工作人员") |
| | | private Integer userType; |
| | | /** |
| | | * 岗位ID |
| | | */ |
| | | @TableField("post_id") |
| | | @ApiModelProperty(value = "岗位ID") |
| | | @ChineseDescription("岗位ID") |
| | | private Integer postId; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | /** |
| | | * 业务类型ImPushTypeEnum |
| | | */ |
| | | @ApiModelProperty(value = "业务类型ImPushTypeEnum") |
| | | @ChineseDescription("业务类型ImPushTypeEnum") |
| | | private String type; |
| | | /** |
| | | * 业务对象ID |
| | | */ |
| | | @TableField("business_id") |
| | | @ApiModelProperty(value = "业务对象ID") |
| | | @ChineseDescription("业务对象ID") |
| | | private String businessId; |
| | | /** |
| | | * 标题 |
| | | */ |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | /** |
| | | * 内容 |
| | | */ |
| | | @ApiModelProperty(value = "内容") |
| | | @ChineseDescription("内容") |
| | | private String content; |
| | | /** |
| | | * 阅读标记:1已读,0未读 |
| | | */ |
| | | @TableField("read_flag") |
| | | @ApiModelProperty(value = "阅读标记:1已读,0未读") |
| | | @ChineseDescription("阅读标记:1已读,0未读") |
| | | private Integer readFlag; |
| | | /** |
| | | * 推送json消息 |
| | | */ |
| | | @TableField("push_json") |
| | | @ApiModelProperty(value = "推送json消息") |
| | | @ChineseDescription("推送json消息") |
| | | private String pushJson; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * IM用户在线状态 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-11 |
| | | */ |
| | | @Data |
| | | @TableName("im_user_status") |
| | | @ApiModel(value = "IM用户在线状态") |
| | | public class ImUserStatus { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private String userid; |
| | | /** |
| | | * 在线状态,0在线,1离线,2登出 |
| | | */ |
| | | @ApiModelProperty(value = "在线状态,0在线,1离线,2登出") |
| | | @ChineseDescription("在线状态,0在线,1离线,2登出") |
| | | private String status; |
| | | /** |
| | | * 操作系统 |
| | | */ |
| | | @ApiModelProperty(value = "操作系统") |
| | | @ChineseDescription("操作系统") |
| | | private String os; |
| | | /** |
| | | * 发生时间 |
| | | */ |
| | | @ApiModelProperty(value = "发生时间") |
| | | @ChineseDescription("发生时间") |
| | | private Long time; |
| | | /** |
| | | * 用户当前的IP地址及端口 |
| | | */ |
| | | @ApiModelProperty(value = "用户当前的IP地址及端口") |
| | | @ChineseDescription("用户当前的IP地址及端口") |
| | | private String clientIp; |
| | | /** |
| | | * 一个连接的唯一 ID |
| | | */ |
| | | @ApiModelProperty(value = "一个连接的唯一 ID") |
| | | @ChineseDescription("一个连接的唯一 ID") |
| | | private String sessionId; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析特殊时间配置 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-26 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_analysis_special_time_config") |
| | | @ApiModel(value = "性格分析特殊时间配置") |
| | | public class MentalAnalysisSpecialTimeConfig { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询师信息id |
| | | */ |
| | | @TableField("counselling_info_id") |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 特殊日期 yyyy-MM-dd |
| | | */ |
| | | @TableField("special_day") |
| | | @ApiModelProperty(value = "特殊日期 yyyy-MM-dd") |
| | | @ChineseDescription("特殊日期 yyyy-MM-dd") |
| | | private Date specialDay; |
| | | /** |
| | | * 特殊开始时间点 HH:mm |
| | | */ |
| | | @TableField("special_begin_time_point") |
| | | @ApiModelProperty(value = "特殊开始时间点 HH:mm") |
| | | @ChineseDescription("特殊开始时间点 HH:mm") |
| | | private String specialBeginTimePoint; |
| | | /** |
| | | * 特殊结束时间点 HH:mm |
| | | */ |
| | | @TableField("special_end_time_point") |
| | | @ApiModelProperty(value = "特殊结束时间点 HH:mm") |
| | | @ChineseDescription("特殊结束时间点 HH:mm") |
| | | private String specialEndTimePoint; |
| | | /** |
| | | * 是否取消当天 1-是 0-否 |
| | | */ |
| | | @TableField("is_cancel_day") |
| | | @ApiModelProperty(value = "是否取消当天 1-是 0-否") |
| | | @ChineseDescription("是否取消当天 1-是 0-否") |
| | | private Integer isCancelDay; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析可预约时间 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-27 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_analysis_time") |
| | | @ApiModel(value = "性格分析可预约时间") |
| | | public class MentalAnalysisTime { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 模块编号 |
| | | */ |
| | | @TableField("module_no") |
| | | @ApiModelProperty(value = "模块编号") |
| | | @ChineseDescription("模块编号") |
| | | private String moduleNo; |
| | | /** |
| | | * 星期几 |
| | | */ |
| | | @TableField("week_day") |
| | | @ApiModelProperty(value = "星期几") |
| | | @ChineseDescription("星期几") |
| | | private Integer weekDay; |
| | | /** |
| | | * 时间点 HH:mm |
| | | */ |
| | | @TableField("begin_time_point") |
| | | @ApiModelProperty(value = "时间点 HH:mm") |
| | | @ChineseDescription("时间点 HH:mm") |
| | | private String beginTimePoint; |
| | | /** |
| | | * 结束时间点 |
| | | */ |
| | | @TableField("end_time_point") |
| | | @ApiModelProperty(value = "结束时间点") |
| | | @ChineseDescription("结束时间点") |
| | | private String endTimePoint; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析时间配置 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-26 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_analysis_time_config") |
| | | @ApiModel(value = "性格分析时间配置") |
| | | public class MentalAnalysisTimeConfig { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 咨询师信息id |
| | | */ |
| | | @TableField("counselling_info_id") |
| | | @ApiModelProperty(value = "咨询师信息id") |
| | | @ChineseDescription("咨询师信息id") |
| | | private Long counsellingInfoId; |
| | | /** |
| | | * 模块编号 |
| | | */ |
| | | @TableField("module_no") |
| | | @ApiModelProperty(value = "模块编号") |
| | | @ChineseDescription("模块编号") |
| | | private String moduleNo; |
| | | /** |
| | | * 星期几 |
| | | */ |
| | | @TableField("week_day") |
| | | @ApiModelProperty(value = "星期几") |
| | | @ChineseDescription("星期几") |
| | | private Integer weekDay; |
| | | /** |
| | | * 时间点 HH:mm |
| | | */ |
| | | @TableField("begin_time_point") |
| | | @ApiModelProperty(value = "时间点 HH:mm") |
| | | @ChineseDescription("时间点 HH:mm") |
| | | private String beginTimePoint; |
| | | /** |
| | | * 结束时间点 |
| | | */ |
| | | @TableField("end_time_point") |
| | | @ApiModelProperty(value = "结束时间点") |
| | | @ChineseDescription("结束时间点") |
| | | private String endTimePoint; |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析预约 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @TableName("t_mental_appointment") |
| | | @ApiModel(value = "性格分析预约") |
| | | public class MentalAppointment { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 状态:0支付中,1已分配,2服务中,3已完成,9已取消 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:0支付中,1已分配,2服务中,3已完成,9已取消") |
| | | @ChineseDescription("状态:0支付中,1已分配,2服务中,3已完成,9已取消") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 预约类型 |
| | | */ |
| | | @ApiModelProperty(value = "预约类型") |
| | | @ChineseDescription("预约类型") |
| | | private String type; |
| | | /** |
| | | * 预约时间天(yyyy-MM-dd) |
| | | */ |
| | | @TableField("appointment_day") |
| | | @ApiModelProperty(value = "预约时间天(yyyy-MM-dd)") |
| | | @ChineseDescription("预约时间天(yyyy-MM-dd)") |
| | | private Date appointmentDay; |
| | | /** |
| | | * 预约时间起(HH:mm) |
| | | */ |
| | | @TableField("begin_time_point") |
| | | @ApiModelProperty(value = "预约时间起(HH:mm)") |
| | | @ChineseDescription("预约时间起(HH:mm)") |
| | | private String beginTimePoint; |
| | | /** |
| | | * 预约时间止(HH:mm) |
| | | */ |
| | | @TableField("end_time_point") |
| | | @ApiModelProperty(value = "预约时间止(HH:mm)") |
| | | @ChineseDescription("预约时间止(HH:mm)") |
| | | private String endTimePoint; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | /** |
| | | * 工作人员ID |
| | | */ |
| | | @TableField("worker_id") |
| | | @ApiModelProperty(value = "工作人员ID") |
| | | @ChineseDescription("工作人员ID") |
| | | private Long workerId; |
| | | /** |
| | | * 用户姓名 |
| | | */ |
| | | @TableField("user_name") |
| | | @ApiModelProperty(value = "用户姓名") |
| | | @ChineseDescription("用户姓名") |
| | | private String userName; |
| | | /** |
| | | * 联系电话 |
| | | */ |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | /** |
| | | * 作业内容 |
| | | */ |
| | | @TableField("work_content") |
| | | @ApiModelProperty(value = "作业内容") |
| | | @ChineseDescription("作业内容") |
| | | private String workContent; |
| | | /** |
| | | * 作业图片 |
| | | */ |
| | | @TableField("work_image") |
| | | @ApiModelProperty(value = "作业图片") |
| | | @ChineseDescription("作业图片") |
| | | private String workImage; |
| | | /** |
| | | * 记录内容 |
| | | */ |
| | | @TableField("record_content") |
| | | @ApiModelProperty(value = "记录内容") |
| | | @ChineseDescription("记录内容") |
| | | private String recordContent; |
| | | /** |
| | | * 记录图片 |
| | | */ |
| | | @TableField("record_image") |
| | | @ApiModelProperty(value = "记录图片") |
| | | @ChineseDescription("记录图片") |
| | | private String recordImage; |
| | | /** |
| | | * 咨询聊天状态:0未开始,1咨询中,2已结束 |
| | | */ |
| | | @TableField("consult_status") |
| | | @ApiModelProperty(value = "咨询聊天状态:0未开始,1咨询中,2已结束") |
| | | @ChineseDescription("咨询聊天状态:0未开始,1咨询中,2已结束") |
| | | private Integer consultStatus; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试分类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_test_class") |
| | | @ApiModel(value = "心理测试分类") |
| | | public class MentalTestClass { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 分类名称 |
| | | */ |
| | | @ApiModelProperty(value = "分类名称") |
| | | @ChineseDescription("分类名称") |
| | | private String name; |
| | | /** |
| | | * 状态:1正常,2冻结 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:1正常,2冻结") |
| | | @ChineseDescription("状态:1正常,2冻结") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 排序,默认desc |
| | | */ |
| | | @ApiModelProperty(value = "排序,默认desc") |
| | | @ChineseDescription("排序,默认desc") |
| | | private Integer sort; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试选项 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_test_option") |
| | | @ApiModel(value = "心理测试选项") |
| | | public class MentalTestOption { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 题库ID |
| | | */ |
| | | @TableField("topic_id") |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | /** |
| | | * 问题ID |
| | | */ |
| | | @TableField("question_id") |
| | | @ApiModelProperty(value = "问题ID") |
| | | @ChineseDescription("问题ID") |
| | | private Long questionId; |
| | | /** |
| | | * 排序(ABCD/1234) |
| | | */ |
| | | @TableField("item_no") |
| | | @ApiModelProperty(value = "排序(ABCD/1234)") |
| | | @ChineseDescription("排序(ABCD/1234)") |
| | | private String itemNo; |
| | | /** |
| | | * 分值 |
| | | */ |
| | | @ApiModelProperty(value = "分值") |
| | | @ChineseDescription("分值") |
| | | private Integer score; |
| | | /** |
| | | * 选项内容 |
| | | */ |
| | | @ApiModelProperty(value = "选项内容") |
| | | @ChineseDescription("选项内容") |
| | | private String content; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试问题 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_test_question") |
| | | @ApiModel(value = "心理测试问题") |
| | | public class MentalTestQuestion { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 题目ID |
| | | */ |
| | | @TableField("topic_id") |
| | | @ApiModelProperty(value = "题目ID") |
| | | @ChineseDescription("题目ID") |
| | | private Long topicId; |
| | | /** |
| | | * 标题 |
| | | */ |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | /** |
| | | * 类型:1单选,2多选 |
| | | */ |
| | | @ApiModelProperty(value = "类型:1单选,2多选") |
| | | @ChineseDescription("类型:1单选,2多选") |
| | | private Integer type; |
| | | /** |
| | | * 排序,默认asc |
| | | */ |
| | | @TableField("item_no") |
| | | @ApiModelProperty(value = "排序,默认asc") |
| | | @ChineseDescription("排序,默认asc") |
| | | private String itemNo; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试记录 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-09 |
| | | */ |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @TableName("t_mental_test_record") |
| | | @ApiModel(value = "心理测试记录") |
| | | public class MentalTestRecord { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 答题编号 |
| | | */ |
| | | @TableField("answer_no") |
| | | @ApiModelProperty(value = "答题编号") |
| | | @ChineseDescription("答题编号") |
| | | private String answerNo; |
| | | /** |
| | | * 题库ID |
| | | */ |
| | | @TableField("topic_id") |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | /** |
| | | * 结果计算方式:0得分,1选项,2测试 |
| | | */ |
| | | @TableField("result_calculate_mode") |
| | | @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试") |
| | | @ChineseDescription("结果计算方式:0得分,1选项,2测试") |
| | | private Integer resultCalculateMode; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | /** |
| | | * 分值 |
| | | */ |
| | | @ApiModelProperty(value = "分值") |
| | | @ChineseDescription("分值") |
| | | private Integer score; |
| | | /** |
| | | * 结果描述 |
| | | */ |
| | | @ApiModelProperty(value = "结果描述") |
| | | @ChineseDescription("结果描述") |
| | | private String content; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 1v1咨询性格分析师 |
| | | */ |
| | | @TableField("consult_worker_id") |
| | | @ApiModelProperty(value = "1v1咨询性格分析师") |
| | | @ChineseDescription("1v1咨询性格分析师") |
| | | private Long consultWorkerId; |
| | | /** |
| | | * 1v1咨询订单ID |
| | | */ |
| | | @TableField("order_consult_one_id") |
| | | @ApiModelProperty(value = "1v1咨询订单ID") |
| | | @ChineseDescription("1v1咨询订单ID") |
| | | private Long orderConsultOneId; |
| | | |
| | | @TableField("mental_appointment_id") |
| | | @ApiModelProperty(value = "性格分析预约ID") |
| | | @ChineseDescription("性格分析预约ID") |
| | | private Long mentalAppointmentId; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试结果 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-09 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_test_result") |
| | | @ApiModel(value = "心理测试结果") |
| | | public class MentalTestResult { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 答题编号 |
| | | */ |
| | | @TableField("answer_no") |
| | | @ApiModelProperty(value = "答题编号") |
| | | @ChineseDescription("答题编号") |
| | | private String answerNo; |
| | | /** |
| | | * 题库ID |
| | | */ |
| | | @TableField("topic_id") |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | /** |
| | | * 问题ID |
| | | */ |
| | | @TableField("question_id") |
| | | @ApiModelProperty(value = "问题ID") |
| | | @ChineseDescription("问题ID") |
| | | private Long questionId; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | /** |
| | | * 选项编号 |
| | | */ |
| | | @TableField("item_no") |
| | | @ApiModelProperty(value = "选项编号") |
| | | @ChineseDescription("选项编号") |
| | | private String itemNo; |
| | | /** |
| | | * 分值 |
| | | */ |
| | | @ApiModelProperty(value = "分值") |
| | | @ChineseDescription("分值") |
| | | private Integer score; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试结果配置 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_test_result_set") |
| | | @ApiModel(value = "心理测试结果配置") |
| | | public class MentalTestResultSet { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 题库ID |
| | | */ |
| | | @TableField("topic_id") |
| | | @ApiModelProperty(value = "题库ID") |
| | | @ChineseDescription("题库ID") |
| | | private Long topicId; |
| | | /** |
| | | * 结果计算方式:0得分,1选项,2测试 |
| | | */ |
| | | @TableField("result_calculate_mode") |
| | | @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试") |
| | | @ChineseDescription("结果计算方式:0得分,1选项,2测试") |
| | | private Integer resultCalculateMode; |
| | | /** |
| | | * 最低分 |
| | | */ |
| | | @ApiModelProperty(value = "最低分") |
| | | @ChineseDescription("最低分") |
| | | private Integer min; |
| | | /** |
| | | * 最高分 |
| | | */ |
| | | @ApiModelProperty(value = "最高分") |
| | | @ChineseDescription("最高分") |
| | | private Integer max; |
| | | /** |
| | | * 选项编号 |
| | | */ |
| | | @TableField("item_no") |
| | | @ApiModelProperty(value = "选项编号") |
| | | @ChineseDescription("选项编号") |
| | | private String itemNo; |
| | | /** |
| | | * 选项名称 |
| | | */ |
| | | @TableField("item_name") |
| | | @ApiModelProperty(value = "选项名称") |
| | | @ChineseDescription("选项名称") |
| | | private String itemName; |
| | | /** |
| | | * 结果描述 |
| | | */ |
| | | @ApiModelProperty(value = "结果描述") |
| | | @ChineseDescription("结果描述") |
| | | private String content; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试题库 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_mental_test_topic") |
| | | @ApiModel(value = "心理测试题库") |
| | | public class MentalTestTopic { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 状态:1正常,2冻结 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:1正常,2冻结") |
| | | @ChineseDescription("状态:1正常,2冻结") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 标题 |
| | | */ |
| | | @ApiModelProperty(value = "标题") |
| | | @ChineseDescription("标题") |
| | | private String title; |
| | | /** |
| | | * 分类 |
| | | */ |
| | | @TableField("class_id") |
| | | @ApiModelProperty(value = "分类") |
| | | @ChineseDescription("分类") |
| | | private String classId; |
| | | /** |
| | | * 简介 |
| | | */ |
| | | @ApiModelProperty(value = "简介") |
| | | @ChineseDescription("简介") |
| | | private String intro; |
| | | /** |
| | | * 图片 |
| | | */ |
| | | @ApiModelProperty(value = "图片") |
| | | @ChineseDescription("图片") |
| | | private String image; |
| | | /** |
| | | * 测试类型:0免费,1付费 |
| | | */ |
| | | @TableField("test_type") |
| | | @ApiModelProperty(value = "测试类型:0免费,1付费") |
| | | @ChineseDescription("测试类型:0免费,1付费") |
| | | private Integer testType; |
| | | /** |
| | | * 测试费用 |
| | | */ |
| | | @TableField("test_amount") |
| | | @ApiModelProperty(value = "测试费用") |
| | | @ChineseDescription("测试费用") |
| | | private BigDecimal testAmount; |
| | | /** |
| | | * 咨询1V1,0无,1有 |
| | | */ |
| | | @TableField("consult_one") |
| | | @ApiModelProperty(value = "咨询1V1,0无,1有") |
| | | @ChineseDescription("咨询1V1,0无,1有") |
| | | private Integer consultOne; |
| | | /** |
| | | * 咨询费用 |
| | | */ |
| | | @TableField("consult_amount") |
| | | @ApiModelProperty(value = "咨询费用") |
| | | @ChineseDescription("咨询费用") |
| | | private BigDecimal consultAmount; |
| | | /** |
| | | * 结果计算方式:0得分,1选项,2测试 |
| | | */ |
| | | @TableField("result_calculate_mode") |
| | | @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试") |
| | | @ChineseDescription("结果计算方式:0得分,1选项,2测试") |
| | | private Integer resultCalculateMode; |
| | | |
| | | @TableField("test_people_num") |
| | | @ApiModelProperty(value = "测试人数") |
| | | @ChineseDescription("测试人数") |
| | | private Integer testPeopleNum; |
| | | |
| | | @TableField("test_set_num") |
| | | @ApiModelProperty(value = "测试配置人数") |
| | | @ChineseDescription("测试配置人数") |
| | | private Integer testSetNum; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理咨询1V1订单 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @TableName("t_order_consult_one") |
| | | @ApiModel(value = "心理咨询1V1订单") |
| | | public class OrderConsultOne { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 状态:0待支付,1已支付,9取消 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:0待支付,1已支付,9取消") |
| | | @ChineseDescription("状态:0待支付,1已支付,9取消") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 订单编号 |
| | | */ |
| | | @TableField("order_no") |
| | | @ApiModelProperty(value = "订单编号") |
| | | @ChineseDescription("订单编号") |
| | | private String orderNo; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | /** |
| | | * 商品ID |
| | | */ |
| | | @TableField("goods_id") |
| | | @ApiModelProperty(value = "商品ID") |
| | | @ChineseDescription("商品ID") |
| | | private Long goodsId; |
| | | /** |
| | | * 订单金额 |
| | | */ |
| | | @TableField("order_amount") |
| | | @ApiModelProperty(value = "订单金额") |
| | | @ChineseDescription("订单金额") |
| | | private BigDecimal orderAmount; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @TableField("pay_amount") |
| | | @ApiModelProperty(value = "支付金额") |
| | | @ChineseDescription("支付金额") |
| | | private BigDecimal payAmount; |
| | | /** |
| | | * 支付时间 |
| | | */ |
| | | @TableField("pay_time") |
| | | @ApiModelProperty(value = "支付时间") |
| | | @ChineseDescription("支付时间") |
| | | private Date payTime; |
| | | /** |
| | | * 支付方式,1微信,2支付宝 |
| | | */ |
| | | @TableField("pay_type") |
| | | @ApiModelProperty(value = "支付方式,1微信,2支付宝") |
| | | @ChineseDescription("支付方式,1微信,2支付宝") |
| | | private String payType; |
| | | /** |
| | | * 交易号 |
| | | */ |
| | | @TableField("transaction_no") |
| | | @ApiModelProperty(value = "交易号") |
| | | @ChineseDescription("交易号") |
| | | private String transactionNo; |
| | | /** |
| | | * 退款金额 |
| | | */ |
| | | @TableField("refund_amount") |
| | | @ApiModelProperty(value = "退款金额") |
| | | @ChineseDescription("退款金额") |
| | | private BigDecimal refundAmount; |
| | | /** |
| | | * 退款时间 |
| | | */ |
| | | @TableField("refund_time") |
| | | @ApiModelProperty(value = "退款时间") |
| | | @ChineseDescription("退款时间") |
| | | private Date refundTime; |
| | | /** |
| | | * 取消时间 |
| | | */ |
| | | @TableField("cancel_time") |
| | | @ApiModelProperty(value = "取消时间") |
| | | @ChineseDescription("取消时间") |
| | | private Date cancelTime; |
| | | /** |
| | | * 取消说明 |
| | | */ |
| | | @TableField("cancel_remark") |
| | | @ApiModelProperty(value = "取消说明") |
| | | @ChineseDescription("取消说明") |
| | | private String cancelRemark; |
| | | |
| | | @TableField("appointment_day") |
| | | @ApiModelProperty(value = "预约时间天(yyyy-MM-dd)") |
| | | @ChineseDescription("预约时间天(yyyy-MM-dd)") |
| | | private Date appointmentDay; |
| | | |
| | | @TableField("begin_time_point") |
| | | @ApiModelProperty(value = "预约时间起(HH:mm)") |
| | | @ChineseDescription("预约时间起(HH:mm)") |
| | | private String beginTimePoint; |
| | | |
| | | @TableField("end_time_point") |
| | | @ApiModelProperty(value = "预约时间止(HH:mm)") |
| | | @ChineseDescription("预约时间止(HH:mm)") |
| | | private String endTimePoint; |
| | | |
| | | @TableField("mental_appointment_id") |
| | | @ApiModelProperty(value = "性格分析预约ID") |
| | | @ChineseDescription("性格分析预约ID") |
| | | private Long mentalAppointmentId; |
| | | |
| | | @TableField("mental_test_record_id") |
| | | @ApiModelProperty(value = "心理测试结果ID") |
| | | @ChineseDescription("心理测试结果ID") |
| | | private Long mentalTestRecordId; |
| | | |
| | | @TableField("mental_test_order_no") |
| | | @ApiModelProperty(value = "心理测试订单编号") |
| | | @ChineseDescription("心理测试订单编号") |
| | | private String mentalTestOrderNo; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试订单 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @TableName("t_order_mental_test") |
| | | @ApiModel(value = "心理测试订单") |
| | | public class OrderMentalTest { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 状态:0待支付,1已支付,9取消 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "状态:0待支付,1已支付,9取消") |
| | | @ChineseDescription("状态:0待支付,1已支付,9取消") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 订单编号 |
| | | */ |
| | | @TableField("order_no") |
| | | @ApiModelProperty(value = "订单编号") |
| | | @ChineseDescription("订单编号") |
| | | private String orderNo; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | /** |
| | | * 商品ID |
| | | */ |
| | | @TableField("goods_id") |
| | | @ApiModelProperty(value = "商品ID") |
| | | @ChineseDescription("商品ID") |
| | | private Long goodsId; |
| | | /** |
| | | * 订单金额 |
| | | */ |
| | | @TableField("order_amount") |
| | | @ApiModelProperty(value = "订单金额") |
| | | @ChineseDescription("订单金额") |
| | | private BigDecimal orderAmount; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @TableField("pay_amount") |
| | | @ApiModelProperty(value = "支付金额") |
| | | @ChineseDescription("支付金额") |
| | | private BigDecimal payAmount; |
| | | /** |
| | | * 支付时间 |
| | | */ |
| | | @TableField("pay_time") |
| | | @ApiModelProperty(value = "支付时间") |
| | | @ChineseDescription("支付时间") |
| | | private Date payTime; |
| | | /** |
| | | * 支付方式,1微信,2支付宝 |
| | | */ |
| | | @TableField("pay_type") |
| | | @ApiModelProperty(value = "支付方式,1微信,2支付宝") |
| | | @ChineseDescription("支付方式,1微信,2支付宝") |
| | | private String payType; |
| | | /** |
| | | * 交易号 |
| | | */ |
| | | @TableField("transaction_no") |
| | | @ApiModelProperty(value = "交易号") |
| | | @ChineseDescription("交易号") |
| | | private String transactionNo; |
| | | /** |
| | | * 退款金额 |
| | | */ |
| | | @TableField("refund_amount") |
| | | @ApiModelProperty(value = "退款金额") |
| | | @ChineseDescription("退款金额") |
| | | private BigDecimal refundAmount; |
| | | /** |
| | | * 退款时间 |
| | | */ |
| | | @TableField("refund_time") |
| | | @ApiModelProperty(value = "退款时间") |
| | | @ChineseDescription("退款时间") |
| | | private Date refundTime; |
| | | /** |
| | | * 取消时间 |
| | | */ |
| | | @TableField("cancel_time") |
| | | @ApiModelProperty(value = "取消时间") |
| | | @ChineseDescription("取消时间") |
| | | private Date cancelTime; |
| | | /** |
| | | * 取消说明 |
| | | */ |
| | | @TableField("cancel_remark") |
| | | @ApiModelProperty(value = "取消说明") |
| | | @ChineseDescription("取消说明") |
| | | private String cancelRemark; |
| | | /** |
| | | * 是否后台创建 |
| | | */ |
| | | @TableField("is_back") |
| | | @ApiModelProperty(value = "是否后台创建") |
| | | @ChineseDescription("是否后台创建") |
| | | private Boolean isBack; |
| | | /** |
| | | * 是否测试 |
| | | */ |
| | | @TableField("test_flag") |
| | | @ApiModelProperty(value = "是否测试") |
| | | @ChineseDescription("是否测试") |
| | | private Boolean testFlag; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理专栏管理 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_psychological_column") |
| | | @ApiModel(value = "心理专栏管理") |
| | | public class PsychologicalColumn extends BaseRequest { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 文章标题 |
| | | */ |
| | | @TableField("article_title") |
| | | @ApiModelProperty(value = "文章标题") |
| | | @ChineseDescription("文章标题") |
| | | private String articleTitle; |
| | | /** |
| | | * 文章内容 |
| | | */ |
| | | @TableField("article_content") |
| | | @ApiModelProperty(value = "文章内容") |
| | | @ChineseDescription("文章内容") |
| | | private String articleContent; |
| | | /** |
| | | * 发布时间 |
| | | */ |
| | | @TableField("release_time") |
| | | @ApiModelProperty(value = "发布时间") |
| | | @ChineseDescription("发布时间") |
| | | private Date releaseTime; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | @TableField("create_user") |
| | | @ApiModelProperty(value = "创建人") |
| | | @ChineseDescription("创建人") |
| | | private Long createUser; |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @TableField("update_user") |
| | | @ApiModelProperty(value = "更新人") |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @TableField("update_time") |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | /** |
| | | * 阅读数量 |
| | | */ |
| | | @TableField("read_num") |
| | | @ApiModelProperty(value = "阅读数量") |
| | | @ChineseDescription("阅读数量") |
| | | private Integer readNum; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理专栏阅读记录 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_psychological_read") |
| | | @ApiModel(value = "心理专栏阅读记录") |
| | | public class PsychologicalRead { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 心理专栏id |
| | | */ |
| | | @TableField("psychological_column_id") |
| | | @ApiModelProperty(value = "心理专栏id") |
| | | @ChineseDescription("心理专栏id") |
| | | private Long psychologicalColumnId; |
| | | /** |
| | | * 阅读时间 |
| | | */ |
| | | @TableField("read_time") |
| | | @ApiModelProperty(value = "阅读时间") |
| | | @ChineseDescription("阅读时间") |
| | | private Date readTime; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 门店预约 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_store_appointment") |
| | | @ApiModel(value = "门店预约") |
| | | public class StoreAppointment extends BaseRequest { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 状态:0预约中,1已分配,2已跟进 |
| | | */ |
| | | @TableField("status_flag") |
| | | @ApiModelProperty(value = "跟进状态:0预约中/未跟进,2-表示已跟进 (1已分配,2已跟进,列表显示的时候1和2都代表已跟进)") |
| | | @ChineseDescription("跟进状态:0预约中/未跟进,2-表示已跟进 (1已分配,2已跟进,列表显示的时候1和2都代表已跟进)") |
| | | private Integer statusFlag; |
| | | /** |
| | | * 删除标记:1已删除,0未删除 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除标记:1已删除,0未删除") |
| | | @ChineseDescription("删除标记:1已删除,0未删除") |
| | | private Integer isDelete; |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @TableField("create_time") |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户ID") |
| | | @ChineseDescription("用户ID") |
| | | private Long userId; |
| | | /** |
| | | * 用户姓名 |
| | | */ |
| | | @TableField("user_name") |
| | | @ApiModelProperty(value = "用户姓名") |
| | | @ChineseDescription("用户姓名") |
| | | private String userName; |
| | | /** |
| | | * 联系电话 |
| | | */ |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ChineseDescription("联系电话") |
| | | private String phone; |
| | | /** |
| | | * 备注说明 |
| | | */ |
| | | @ApiModelProperty(value = "备注说明") |
| | | @ChineseDescription("备注说明") |
| | | private String remark; |
| | | |
| | | |
| | | @TableField("follow_user_id") |
| | | @ApiModelProperty(value = "跟进人id") |
| | | @ChineseDescription("跟进人id") |
| | | private Long followUserId; |
| | | |
| | | @TableField("follow_time") |
| | | @ApiModelProperty(value = "跟进时间") |
| | | @ChineseDescription("跟进时间") |
| | | private Date followTime; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "跟进人名称") |
| | | @ChineseDescription("跟进人名称") |
| | | private String followUserName; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统配置(H5、客服电话) |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Data |
| | | @TableName("t_system_set") |
| | | @ApiModel(value = "系统配置(H5、客服电话)") |
| | | public class SystemSet { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键") |
| | | @ChineseDescription("主键") |
| | | private Long id; |
| | | /** |
| | | * 键值 |
| | | */ |
| | | @NotBlank |
| | | @ApiModelProperty(value = "键值 COUNSELLING_CONTRACT-咨询合同h5,CUSTOMER_SERVICE_NUMBER-客服电话,COOPERATIVE_ENTERPRISE-合作企业h5") |
| | | @ChineseDescription("键值") |
| | | private String keyStr; |
| | | /** |
| | | * 内容 |
| | | */ |
| | | |
| | | @ApiModelProperty(value = "内容") |
| | | @ChineseDescription("内容") |
| | | private String content; |
| | | /** |
| | | * 配置说明 |
| | | */ |
| | | @ApiModelProperty(value = "配置说明") |
| | | @ChineseDescription("配置说明") |
| | | private String remark; |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.entity; |
| | | |
| | | import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户评价表 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Data |
| | | @TableName("t_user_evaluate") |
| | | @ApiModel(value = "用户评价表") |
| | | public class UserEvaluate { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键id") |
| | | @ChineseDescription("主键id") |
| | | private Long id; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("user_id") |
| | | @ApiModelProperty(value = "用户id") |
| | | @ChineseDescription("用户id") |
| | | private Long userId; |
| | | /** |
| | | * 业务类型 1-课程,2-咨询 |
| | | */ |
| | | @TableField("buiness_type") |
| | | @ApiModelProperty(value = "业务类型 1-课程,2-咨询") |
| | | @ChineseDescription("业务类型 1-课程,2-咨询") |
| | | private Integer buinessType; |
| | | /** |
| | | * 业务id 课程id或咨询预约id |
| | | */ |
| | | @TableField("buiness_id") |
| | | @ApiModelProperty(value = "业务id 课程id或咨询人员id") |
| | | @ChineseDescription("业务id 课程id或咨询人员id") |
| | | private Long buinessId; |
| | | /** |
| | | * 评分 |
| | | */ |
| | | @ApiModelProperty(value = "评分") |
| | | @ChineseDescription("评分") |
| | | private BigDecimal score; |
| | | /** |
| | | * 内容 |
| | | */ |
| | | @ApiModelProperty(value = "内容") |
| | | @ChineseDescription("内容") |
| | | private String content; |
| | | |
| | | /** |
| | | * 删除状态 是否删除 1-是,0-否 |
| | | */ |
| | | @TableField("is_delete") |
| | | @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否") |
| | | @ChineseDescription("删除状态 是否删除 1-是,0-否") |
| | | private Integer isDelete; |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @ApiModelProperty("创建时间") |
| | | @TableField(value = "create_time", fill = FieldFill.INSERT) |
| | | @ChineseDescription("创建时间") |
| | | private Date createTime; |
| | | |
| | | |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @ApiModelProperty("更新时间") |
| | | @TableField(value = "update_time", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新时间") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * 更新人 |
| | | */ |
| | | @ApiModelProperty("更新人") |
| | | @TableField(value = "update_user", fill = FieldFill.UPDATE) |
| | | @ChineseDescription("更新人") |
| | | private Long updateUser; |
| | | |
| | | @ApiModelProperty("头像") |
| | | @TableField(exist = false) |
| | | @ChineseDescription("头像") |
| | | private String avatar; |
| | | |
| | | |
| | | @ApiModelProperty("昵称用户名") |
| | | @TableField(exist = false) |
| | | @ChineseDescription("昵称用户名") |
| | | private String nickName; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Area; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 地区码表 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2023-12-27 |
| | | */ |
| | | public interface AreaMapper extends BaseMapper<Area> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Banner; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * banner Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface BannerMapper extends BaseMapper<Banner> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ContractRecord; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 合同签订记录 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ContractRecordMapper extends BaseMapper<ContractRecord> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingInfo; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询师信息 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface CounsellingInfoMapper extends BaseMapper<CounsellingInfo> { |
| | | |
| | | long getCountCounsellingInfo(@Param("list") List<String> tagIds); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingOrder; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询订单信息 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CounsellingOrderMapper extends BaseMapper<CounsellingOrder> { |
| | | |
| | | Page<CounsellingOrderResponseDTO> findCounsellingOrderPage(@Param("page") Page<CounsellingOrderRequest> page, @Param("param") CounsellingOrderRequest counsellingOrderRequest); |
| | | |
| | | Page<CounsellingOrderResponseDTO> findWorkCounsellingOrderPage(@Param("page") Page<CounsellingOrderRequest> page, @Param("param") CounsellingOrderRequest counsellingOrderRequest); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.CounsellingOrderReservationRequestDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.UserCounsellingTotalDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.UserCounsellingOrderReservationRequestDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询订单预约记录 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CounsellingOrderReservationMapper extends BaseMapper<CounsellingOrderReservation> { |
| | | |
| | | Page<CounsellingOrderReservation> findPage(@Param("page") Page page,@Param("params") CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO); |
| | | |
| | | |
| | | Page<CounsellingOrderReservation> findWorkPage(@Param("page") Page page,@Param("params") CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO); |
| | | |
| | | |
| | | Page<CounsellingOrderReservation> findOrderReservationByUserIdPage(@Param("page") Page page,@Param("params") UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO); |
| | | |
| | | UserCounsellingTotalDTO getCounsellingNumTotalByUserId(UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO); |
| | | |
| | | Page<CounsellingOrderReservation> findReservationPage(@Param("page") Page page,@Param("params") CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingReservationRecord; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询记录信息 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CounsellingReservationRecordMapper extends BaseMapper<CounsellingReservationRecord> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingReservationWork; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询作业 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CounsellingReservationWorkMapper extends BaseMapper<CounsellingReservationWork> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询套餐信息 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface CounsellingSetMealMapper extends BaseMapper<CounsellingSetMeal> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingSpecialTimeConfig; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询预约特殊时间配置 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CounsellingSpecialTimeConfigMapper extends BaseMapper<CounsellingSpecialTimeConfig> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingTag; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询擅长领域标签表 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface CounsellingTagMapper extends BaseMapper<CounsellingTag> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询预约时间配置 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CounsellingTimeConfigMapper extends BaseMapper<CounsellingTimeConfig> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.request.CounsellingUserRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingUser; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户咨询师课时信息 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-02-29 |
| | | */ |
| | | public interface CounsellingUserMapper extends BaseMapper<CounsellingUser> { |
| | | |
| | | Page<CounsellingUser> findCounsellingUserPage(@Param("page") Page<CounsellingUser> page, @Param("param") CounsellingUserRequest counsellingUserRequest); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseChapter; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 章节管理 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface CourseChapterMapper extends BaseMapper<CourseChapter> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Course; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程管理 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface CourseMapper extends BaseMapper<Course> { |
| | | |
| | | long getCountCourse(@Param("list") List<String> tagIds); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.CourseOrderResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CourseOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CourseOrder; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程订单信息 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CourseOrderMapper extends BaseMapper<CourseOrder> { |
| | | |
| | | Page<CourseOrderResponseDTO> findCounseOrderPage(@Param("page") Page<CourseOrderResponseDTO> page,@Param("param") CourseOrderRequest courseOrderRequest); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseStudyNote; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程学习笔记 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CourseStudyNoteMapper extends BaseMapper<CourseStudyNote> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseTag; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程标签 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface CourseTagMapper extends BaseMapper<CourseTag> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseUserLearned; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程学习记录 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CourseUserLearnedMapper extends BaseMapper<CourseUserLearned> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程章节学习进度 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface CouserChapterLearningRateMapper extends BaseMapper<CouserChapterLearningRate> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Help; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 帮助 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface HelpMapper extends BaseMapper<Help> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.ImGroupUserDto; |
| | | import cn.stylefeng.guns.modular.business.entity.ImGroup; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息群信息 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ImGroupMapper extends BaseMapper<ImGroup> { |
| | | |
| | | List<ImGroup> getMyGroup(@Param("userId") Long userId, @Param("groupName") String groupName, @Param("statusFlag") Integer statusFlag, @Param("nickName") String nickName, @Param("groupType") Integer groupType, @Param("orderId") String orderId); |
| | | |
| | | List<ImGroupUserDto> groupUser(@Param("groupId") Long groupId); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImGroupUser; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息群用户 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ImGroupUserMapper extends BaseMapper<ImGroupUser> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImNotice; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息通知 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ImNoticeMapper extends BaseMapper<ImNotice> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImUserStatus; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * IM用户在线状态 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-11 |
| | | */ |
| | | public interface ImUserStatusMapper extends BaseMapper<ImUserStatus> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisSpecialTimeConfig; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析特殊时间配置 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-26 |
| | | */ |
| | | public interface MentalAnalysisSpecialTimeConfigMapper extends BaseMapper<MentalAnalysisSpecialTimeConfig> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalAnalysisTimeConfigPageDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析时间配置 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-26 |
| | | */ |
| | | public interface MentalAnalysisTimeConfigMapper extends BaseMapper<MentalAnalysisTimeConfig> { |
| | | |
| | | Page<MentalAnalysisTimeConfigPageDTO> getWorkerPage(@Param("page") Page<Object> page, @Param("nickName") String nickName); |
| | | |
| | | List<MentalAnalysisTimeConfig> getWorkerListByAppointmentTime(@Param("mentalAnalysisStatus") Integer mentalAnalysisStatus, @Param("weekDay") Integer weekDay, @Param("appointmentDay") String appointmentDay, @Param("beginTimePoint") String beginTimePoint, @Param("endTimePoint") String endTimePoint); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTime; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析可预约时间 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-27 |
| | | */ |
| | | public interface MentalAnalysisTimeMapper extends BaseMapper<MentalAnalysisTime> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalAppointmentPageDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyMentalAppointmentDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.UserMentalAppointmentPageResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAppointment; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析预约 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface MentalAppointmentMapper extends BaseMapper<MentalAppointment> { |
| | | |
| | | List<MentalTestMyMentalAppointmentDTO> myMentalAppointment(@Param("userId") Long userId, @Param("consultantName") String consultantName, @Param("statusFlagList") List<Integer> statusFlagList); |
| | | |
| | | Page<UserMentalAppointmentPageResponseDTO> userMentalAppointmentPage(@Param("page") Page<Object> page, @Param("userId") Long userId, @Param("name") String name, @Param("telephone") String telephone, @Param("statusFlag") Integer statusFlag); |
| | | |
| | | Page<MentalAppointmentPageDTO> mentalAnalysisTimeConfigSchedule(@Param("page") Page<Object> page, @Param("searchBeginTime") String searchBeginTime, @Param("searchEndTime") String searchEndTime, @Param("counsellingInfoId") Long counsellingInfoId, @Param("workerNickName") String workerNickName, @Param("userNickName") String userNickName, @Param("userTelephone") String userTelephone, @Param("statusFlag") Integer statusFlag, @Param("statusFlagList") List<Integer> statusFlagList); |
| | | |
| | | List<MentalAppointmentPageDTO> mentalAnalysisTimeConfigSchedule(@Param("searchBeginTime") String searchBeginTime, @Param("searchEndTime") String searchEndTime, @Param("counsellingInfoId") Long counsellingInfoId, @Param("workerNickName") String workerNickName, @Param("userNickName") String userNickName, @Param("userTelephone") String userTelephone, @Param("statusFlag") Integer statusFlag, @Param("statusFlagList") List<Integer> statusFlagList); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestClass; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试分类 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface MentalTestClassMapper extends BaseMapper<MentalTestClass> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestOption; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试选项 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface MentalTestOptionMapper extends BaseMapper<MentalTestOption> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试问题 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface MentalTestQuestionMapper extends BaseMapper<MentalTestQuestion> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestOrderDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestRecordPageDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestRecord; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试记录 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-09 |
| | | */ |
| | | public interface MentalTestRecordMapper extends BaseMapper<MentalTestRecord> { |
| | | |
| | | List<MentalTestMyTestTopicDTO> myTestTopic(@Param("userId") Long userId, @Param("topicId") Long topicId); |
| | | |
| | | List<MentalTestMyTestTopicDTO> myTestRecordTopicByMentalAppointmentId(@Param("mentalAppointmentId") Long mentalAppointmentId, @Param("mentalAppointmentIdList") List<Long> mentalAppointmentIdList); |
| | | |
| | | List<MentalTestMyTestOrderDTO> myTestOrder(@Param("userId") Long userId, @Param("topicId") Long topicId); |
| | | |
| | | Page<MentalTestRecordPageDTO> getPage(@Param("page") Page<Object> page, @Param("title") String title, @Param("nickName") String nickName, @Param("telephone") String telephone, @Param("testType") Integer testType); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestResult; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试结果 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-09 |
| | | */ |
| | | public interface MentalTestResultMapper extends BaseMapper<MentalTestResult> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试结果配置 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface MentalTestResultSetMapper extends BaseMapper<MentalTestResultSet> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestTopicPageDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试题库 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface MentalTestTopicMapper extends BaseMapper<MentalTestTopic> { |
| | | |
| | | Page<MentalTestTopicPageDTO> topicPage(Page page, @Param("classIdList") List<String> classIdList, @Param("title") String title, @Param("testType") Integer testType, @Param("testFlag") Integer testFlag, @Param("userId") Long userId, @Param("statusFlag") Integer statusFlag); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.OrderConsultOne; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理咨询1V1订单 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface OrderConsultOneMapper extends BaseMapper<OrderConsultOne> { |
| | | |
| | | List<Map<String, Object>> getStatOrderList(@Param("dateFormat") String dateFormat, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("workerId") Long workerId, @Param("statusList") List<Integer> statusList); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.OrderMentalTestDetailDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.OrderMentalTestPageDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.OrderMentalTest; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试订单 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface OrderMentalTestMapper extends BaseMapper<OrderMentalTest> { |
| | | |
| | | Page<OrderMentalTestPageDTO> getPage(@Param("page") Page<Object> page, @Param("title") String title, @Param("nickName") String nickName, @Param("telephone") String telephone, @Param("testType") Integer testType, @Param("statusFlag") Integer statusFlag, @Param("adminView") Integer adminView); |
| | | |
| | | OrderMentalTestDetailDTO getInfoById(@Param("id") Long id); |
| | | |
| | | List<Map<String, Object>> getStatOrderList(@Param("dateFormat") String dateFormat, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("workerId") Long workerId, @Param("statusList") List<Integer> statusList); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.PsychologicalColumn; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理专栏管理 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface PsychologicalColumnMapper extends BaseMapper<PsychologicalColumn> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.PsychologicalRead; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理专栏阅读记录 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface PsychologicalReadMapper extends BaseMapper<PsychologicalRead> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.StoreAppointment; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 门店预约 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface StoreAppointmentMapper extends BaseMapper<StoreAppointment> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.SystemSet; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统配置(H5、客服电话) Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface SystemSetMapper extends BaseMapper<SystemSet> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.request.TotalRequest; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface TotalReportMapper { |
| | | |
| | | |
| | | List<Map<String,Object>> courseTotalData(TotalRequest totalRequest); |
| | | |
| | | List<Map<String,Object>> mentalTestTotalData(TotalRequest totalRequest); |
| | | |
| | | List<Map<String,Object>> orderConsultOneTotalData(TotalRequest totalRequest); |
| | | |
| | | List<Map<String,Object>> courseNameTotalData(TotalRequest totalRequest); |
| | | |
| | | List<Map<String,Object>> courseTagTotalData(TotalRequest totalRequest); |
| | | |
| | | long courseBuyTotal(TotalRequest totalRequest); |
| | | /** |
| | | * 咨询统计 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> counsellingTotalData(TotalRequest totalRequest); |
| | | |
| | | List<Map<String,Object>> counsellingOrderTypeTotalData( TotalRequest totalRequest); |
| | | |
| | | List<Map<String,Object>> counsellingTypeTotalData( TotalRequest totalRequest); |
| | | |
| | | long counsellingBuyTotal(TotalRequest totalRequest); |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.mapper; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.UserEvaluate; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户评价表 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface UserEvaluateMapper extends BaseMapper<UserEvaluate> { |
| | | |
| | | } |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.AreaMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.Area"> |
| | | <id column="id" property="id" /> |
| | | <result column="pid" property="pid" /> |
| | | <result column="name" property="name" /> |
| | | <result column="shortname" property="shortname" /> |
| | | <result column="longitude" property="longitude" /> |
| | | <result column="latitude" property="latitude" /> |
| | | <result column="level" property="level" /> |
| | | <result column="sort" property="sort" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, pid, name, shortname, longitude, latitude, level, sort |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.BannerMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.Banner"> |
| | | <id column="id" property="id" /> |
| | | <result column="status_flag" property="statusFlag" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="type" property="type" /> |
| | | <result column="name" property="name" /> |
| | | <result column="image" property="image" /> |
| | | <result column="jump_module" property="jumpModule" /> |
| | | <result column="jump_page" property="jumpPage" /> |
| | | <result column="jump_id" property="jumpId" /> |
| | | <result column="sort" property="sort" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, status_flag, is_delete, type, name, image, jump_module, jump_page, jump_id, sort |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.ContractRecordMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.ContractRecord"> |
| | | <id column="id" property="id" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="contract_content" property="contractContent" /> |
| | | <result column="signing_time" property="signingTime" /> |
| | | <result column="sign_url" property="signUrl" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, user_id, contract_content, signing_time, sign_url |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingInfoMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingInfo"> |
| | | <id column="id" property="id" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="counselling_type" property="counsellingType" /> |
| | | <result column="counselling_tag_ids" property="counsellingTagIds" /> |
| | | <result column="qualification_introduction" property="qualificationIntroduction" /> |
| | | <result column="frist_price" property="fristPrice" /> |
| | | <result column="cover_image_url" property="coverImageUrl" /> |
| | | <result column="detail_url" property="detailUrl" /> |
| | | <result column="personal_profile" property="personalProfile" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | <result column="total_score" property="totalScore" /> |
| | | <result column="listing_status" property="listingStatus" /> |
| | | <result column="weeks" property="weeks" /> |
| | | <result column="time_points" property="timePoints" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, user_id, counselling_type, counselling_tag_ids, qualification_introduction, frist_price, cover_image_url, detail_url, personal_profile, create_user, is_delete, create_time, update_user, update_time, total_score, listing_status, weeks, time_points |
| | | </sql> |
| | | |
| | | |
| | | <select id="getCountCounsellingInfo" resultType="java.lang.Long"> |
| | | select count(1) from t_counselling_info |
| | | where is_delete = 0 |
| | | <if test="list != null"> |
| | | and |
| | | <foreach collection="list" item="item" open="(" close=")" separator="or"> |
| | | FIND_IN_SET(#{item},counselling_tag_ids) |
| | | </foreach> |
| | | </if> |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingOrderMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingOrder"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_info_id" property="counsellingInfoId" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="consultant_user_id" property="consultantUserId" /> |
| | | <result column="companion_user_id" property="companionUserId" /> |
| | | <result column="order_type" property="orderType" /> |
| | | <result column="phone" property="phone" /> |
| | | <result column="effective_begin_time" property="effectiveBeginTime" /> |
| | | <result column="effective_end_time" property="effectiveEndTime" /> |
| | | <result column="counselling_set_meal_id" property="counsellingSetMealId" /> |
| | | <result column="set_meal_json" property="setMealJson" /> |
| | | <result column="class_hours" property="classHours" /> |
| | | <result column="residue_class_hours" property="residueClassHours" /> |
| | | <result column="user_info_json" property="userInfoJson" /> |
| | | <result column="status_flag" property="statusFlag" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="order_no" property="orderNo" /> |
| | | <result column="order_amount" property="orderAmount" /> |
| | | <result column="pay_amount" property="payAmount" /> |
| | | <result column="pay_time" property="payTime" /> |
| | | <result column="pay_type" property="payType" /> |
| | | <result column="transaction_no" property="transactionNo" /> |
| | | <result column="refund_amount" property="refundAmount" /> |
| | | <result column="refund_time" property="refundTime" /> |
| | | <result column="update_user" property="updateUser"/> |
| | | <result column="update_time" property="updateTime"/> |
| | | <result column="first_appointment_date" property="firstAppointmentDate"/> |
| | | <result column="first_appointment_times" property="firstAppointmentTimes"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="BaseDtoMap" type="cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO" extends="BaseResultMap"> |
| | | <result column="counsellingName" property="counsellingName"/> |
| | | <result column="userName" property="userName"/> |
| | | <result column="companionUserName" property="companionUserName"/> |
| | | <result column="consultantUserName" property="consultantUserName"/> |
| | | <result column="lastTime" property="lastTime"/> |
| | | <result column="coverImageUrl" property="coverImageUrl"/> |
| | | <result column="isFirstAppointment" property="isFirstAppointment"/> |
| | | <result column="listingStatus" property="listingStatus"/> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_info_id, user_id, consultant_user_id, companion_user_id, order_type, phone, effective_begin_time, effective_end_time, counselling_set_meal_id, set_meal_json, class_hours, residue_class_hours, user_info_json, status_flag, is_delete, create_time, create_user, order_no, order_amount, pay_amount, pay_time, pay_type, transaction_no, refund_amount, refund_time |
| | | </sql> |
| | | |
| | | <select id="findCounsellingOrderPage" resultMap="BaseDtoMap"> |
| | | SELECT |
| | | tco.*,toci.nick_name counsellingName,toc1.nick_name userName,toc2.nick_name companionUserName,toc3.nick_name consultantUserName,tci.counselling_type counsellingType, |
| | | tci.cover_image_url coverImageUrl,tcu.is_first_appointment isFirstAppointment,tci.listing_status listingStatus |
| | | FROM t_counselling_order tco |
| | | LEFT JOIN toc_customer toc1 ON toc1.customer_id = tco.user_id |
| | | LEFT JOIN toc_customer toc2 ON toc2.customer_id = tco.companion_user_id |
| | | LEFT JOIN toc_customer toc3 ON toc3.customer_id = tco.consultant_user_id |
| | | LEFT JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id |
| | | LEFT JOIN toc_customer toci ON toci.customer_id = tci.user_id |
| | | LEFT JOIN t_counselling_user tcu on tcu.counselling_info_id = tco.counselling_info_id and tcu.user_id = tco.user_id |
| | | <where> |
| | | AND tco.is_delete = 0 |
| | | <if test="param.counsellingName != null and param.counsellingName != ''"> |
| | | AND toci.nick_name LIKE CONCAT('%',#{param.counsellingName},'%') |
| | | </if> |
| | | <if test="param.userName != null and param.userName != ''"> |
| | | AND toc1.nick_name LIKE CONCAT('%',#{param.userName},'%') |
| | | </if> |
| | | <if test="param.companionUserName != null and param.companionUserName != ''"> |
| | | AND toc2.nick_name LIKE CONCAT('%',#{param.companionUserName},'%') |
| | | </if> |
| | | <if test="param.consultantUserName != null and param.consultantUserName != ''"> |
| | | AND toc3.nick_name LIKE CONCAT('%',#{param.consultantUserName},'%') |
| | | </if> |
| | | <if test="param.phone != null and param.phone != ''"> |
| | | AND tco.phone LIKE CONCAT('%',#{param.phone},'%') |
| | | </if> |
| | | <if test="param.orderType != null"> |
| | | AND tco.order_type = #{param.orderType} |
| | | </if> |
| | | <if test="param.statusFlag != null"> |
| | | AND tco.status_flag = #{param.statusFlag} |
| | | </if> |
| | | <if test="param.userId != null"> |
| | | AND tco.user_id = #{param.userId} |
| | | </if> |
| | | <if test="param.counsellingInfoId != null"> |
| | | AND tco.counselling_info_id = #{param.counsellingInfoId} |
| | | </if> |
| | | <if test="param.searchType != null and param.searchType == 2"> |
| | | AND tco.status_flag IN (1,2) |
| | | </if> |
| | | |
| | | </where> |
| | | ORDER BY tco.create_time DESC |
| | | |
| | | </select> |
| | | <select id="findWorkCounsellingOrderPage" resultMap="BaseDtoMap"> |
| | | SELECT |
| | | tcu.*,toci.nick_name counsellingName,toc1.nick_name userName,toc2.nick_name companionUserName,toc3.nick_name consultantUserName, |
| | | tcor.lastTime,tci.listing_status listingStatus,tci.cover_image_url coverImageUrl,tcu.is_first_appointment isFirstAppointment |
| | | FROM t_counselling_user tcu |
| | | LEFT JOIN toc_customer toc1 ON toc1.customer_id = tcu.user_id |
| | | LEFT JOIN toc_customer toc2 ON toc2.customer_id = tcu.companion_user_id |
| | | LEFT JOIN toc_customer toc3 ON toc3.customer_id = tcu.consultant_user_id |
| | | LEFT JOIN t_counselling_info tci ON tci.id = tcu.counselling_info_id |
| | | LEFT JOIN toc_customer toci ON toci.customer_id = tci.user_id |
| | | LEFT JOIN ( |
| | | SELECT counselling_info_id,user_id,MAX(reservation_begin_time) lastTime FROM |
| | | t_counselling_order_reservation |
| | | WHERE stauts IN (2,3,4) and reservation_type =2 |
| | | GROUP BY counselling_info_id,user_id |
| | | ) tcor ON tcor.counselling_info_id = tcu.counselling_info_id and tcor.user_id = tcu.user_id |
| | | |
| | | <where> |
| | | AND tcu.is_delete = 0 AND tcu.is_first_appointment = 3 |
| | | <if test="param.counsellingName != null and param.counsellingName != ''"> |
| | | AND toci.nick_name LIKE CONCAT('%',#{param.counsellingName},'%') |
| | | </if> |
| | | <if test="param.userName != null and param.userName != ''"> |
| | | AND toc1.nick_name LIKE CONCAT('%',#{param.userName},'%') |
| | | </if> |
| | | <if test="param.companionUserName != null and param.companionUserName != ''"> |
| | | AND toc2.nick_name LIKE CONCAT('%',#{param.companionUserName},'%') |
| | | </if> |
| | | <if test="param.consultantUserName != null and param.consultantUserName != ''"> |
| | | AND toc3.nick_name LIKE CONCAT('%',#{param.consultantUserName},'%') |
| | | </if> |
| | | <if test="param.phone != null and param.phone != ''"> |
| | | AND tcu.phone LIKE CONCAT('%',#{param.phone},'%') |
| | | </if> |
| | | |
| | | <if test="param.userId != null"> |
| | | AND tcu.user_id = #{param.userId} |
| | | </if> |
| | | <if test="param.counsellingInfoId != null"> |
| | | AND tcu.counselling_info_id = #{param.counsellingInfoId} |
| | | </if> |
| | | <if test="param.customerId != null"> |
| | | AND ( tcu.companion_user_id = #{param.customerId} OR tcu.consultant_user_id = #{param.customerId} OR tci.user_id = #{param.customerId} ) |
| | | </if> |
| | | </where> |
| | | ORDER BY tcu.create_time DESC |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingOrderReservationMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_info_id" property="counsellingInfoId" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="consultant_user_id" property="consultantUserId" /> |
| | | <result column="companion_user_id" property="companionUserId" /> |
| | | <result column="counselling_order_id" property="counsellingOrderId" /> |
| | | <result column="reservation_begin_time" property="reservationBeginTime" /> |
| | | <result column="reservation_end_time" property="reservationEndTime" /> |
| | | <result column="stauts" property="stauts" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="service_begin_time" property="serviceBeginTime" /> |
| | | <result column="service_end_time" property="serviceEndTime" /> |
| | | <result column="service_approve_time" property="serviceApproveTime" /> |
| | | <result column="servie_complete_time" property="servieCompleteTime" /> |
| | | <result column="consume_course_hour" property="consumeCourseHour" /> |
| | | <result column="reservation_type" property="reservationType"/> |
| | | <result column="counsellingInfoName" property="counsellingInfoName"/> |
| | | <result column="userName" property="userName"/> |
| | | <result column="workNum" property="workNum"/> |
| | | <result column="phone" property="phone"/> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_info_id, user_id, consultant_user_id, companion_user_id, counselling_order_id, reservation_begin_time, reservation_end_time, stauts, create_time, service_begin_time, service_end_time, service_approve_time, servie_complete_time, consume_course_hour |
| | | </sql> |
| | | |
| | | <select id="findPage" resultMap="BaseResultMap"> |
| | | SELECT tcor.*,tco.phone,tc.nick_name userName,tcus.nick_name counsellingInfoName, |
| | | ( |
| | | SELECT count(1) FROM t_counselling_reservation_work WHERE is_delete = 0 and counselling_order_reservation_id = tcor.id |
| | | ) workNum |
| | | FROM t_counselling_order_reservation tcor |
| | | INNER JOIN toc_customer tc on tc.customer_id = tcor.user_id |
| | | INNER JOIN t_counselling_info tci on tci.id = tcor.counselling_info_id |
| | | INNER JOIN toc_customer tcus on tcus.customer_id = tci.user_id |
| | | INNER JOIN t_counselling_user tco on tco.counselling_info_id = tcor.counselling_info_id and tco.user_id = tcor.user_id |
| | | <where> |
| | | |
| | | <if test="params.stauts != null"> |
| | | AND tcor.stauts = #{params.stauts} |
| | | </if> |
| | | <if test="params.userName != null and params.userName != ''"> |
| | | AND tc.nick_name LIKE CONCAT('%',#{params.userName},'%') |
| | | </if> |
| | | <if test="params.counsellingInfoName != null and params.counsellingInfoName != ''"> |
| | | AND tcus.nick_name LIKE CONCAT('%',#{params.counsellingInfoName},'%') |
| | | </if> |
| | | <if test="params.phone != null and params.phone != ''"> |
| | | AND tco.phone LIKE CONCAT('%',#{params.phone},'%') |
| | | </if> |
| | | <if test="params.searchBeginTime != null and params.searchBeginTime != ''"> |
| | | AND tcor.reservation_begin_time >= #{params.searchBeginTime} |
| | | </if> |
| | | <if test="params.searchEndTime != null and params.searchEndTime != ''"> |
| | | AND tcor.reservation_end_time <= #{params.searchEndTime} |
| | | </if> |
| | | <if test="params.reservationType != null"> |
| | | AND tcor.reservation_type = #{params.reservationType} |
| | | </if> |
| | | <if test="params.counsellingInfoId != null"> |
| | | AND tcor.counselling_info_id = #{params.counsellingInfoId} |
| | | </if> |
| | | <if test="params.counsellingOrderId != null"> |
| | | AND tcor.counselling_order_id = #{params.counsellingOrderId} |
| | | </if> |
| | | <if test="params.customerId != null"> |
| | | AND tcor.user_id = #{params.customerId} |
| | | </if> |
| | | </where> |
| | | ORDER BY tcor.reservation_begin_time DESC |
| | | </select> |
| | | |
| | | |
| | | <select id="findWorkPage" resultMap="BaseResultMap"> |
| | | SELECT tcor.*,tco.phone,tc.nick_name userName,tcus.nick_name counsellingInfoName FROM t_counselling_order_reservation tcor |
| | | INNER JOIN toc_customer tc on tc.customer_id = tcor.user_id |
| | | INNER JOIN t_counselling_info tci on tci.id = tcor.counselling_info_id |
| | | INNER JOIN toc_customer tcus on tcus.customer_id = tci.user_id |
| | | INNER JOIN t_counselling_user tco on tco.counselling_info_id = tcor.counselling_info_id and tco.user_id = tcor.user_id |
| | | <where> |
| | | <if test="params.stauts != null"> |
| | | AND tcor.stauts = #{params.stauts} |
| | | </if> |
| | | <if test="params.userName != null and params.userName != ''"> |
| | | AND tc.nick_name LIKE CONCAT('%',#{params.userName},'%') |
| | | </if> |
| | | <if test="params.counsellingInfoName != null and params.counsellingInfoName != ''"> |
| | | AND tcus.nick_name LIKE CONCAT('%',#{params.counsellingInfoName},'%') |
| | | </if> |
| | | <if test="params.phone != null and params.phone != ''"> |
| | | AND tco.phone LIKE CONCAT('%',#{params.phone},'%') |
| | | </if> |
| | | <if test="params.searchBeginTime != null and params.searchBeginTime != ''"> |
| | | AND tcor.reservation_begin_time >= #{params.searchBeginTime} |
| | | </if> |
| | | <if test="params.searchEndTime != null and params.searchEndTime != ''"> |
| | | AND tcor.reservation_end_time <= #{params.searchEndTime} |
| | | </if> |
| | | <if test="params.reservationType != null"> |
| | | AND tcor.reservation_type = #{params.reservationType} |
| | | </if> |
| | | <if test="params.counsellingInfoId != null"> |
| | | AND tcor.counselling_info_id = #{params.counsellingInfoId} |
| | | </if> |
| | | <if test="params.counsellingOrderId != null"> |
| | | AND tcor.counselling_order_id = #{params.counsellingOrderId} |
| | | </if> |
| | | <if test="params.customerId != null"> |
| | | AND (tcor.consultant_user_id = #{params.customerId} or tcor.companion_user_id = #{params.customerId} |
| | | or tci.user_id = #{params.customerId} ) |
| | | </if> |
| | | <if test="params.searchType != null and params.searchType == 1"> |
| | | AND tcor.stauts IN (2,3,4) |
| | | </if> |
| | | </where> |
| | | ORDER BY tcor.reservation_begin_time DESC |
| | | |
| | | </select> |
| | | <select id="findOrderReservationByUserIdPage" |
| | | resultType="cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation"> |
| | | SELECT tcor.*,tco.phone,tc.nick_name userName,tcus.nick_name counsellingInfoName FROM t_counselling_order_reservation tcor |
| | | INNER JOIN toc_customer tc on tc.customer_id = tcor.user_id |
| | | INNER JOIN t_counselling_info tci on tci.id = tcor.counselling_info_id |
| | | INNER JOIN toc_customer tcus on tcus.customer_id = tci.user_id |
| | | INNER JOIN t_counselling_user tco on tco.counselling_info_id = tcor.counselling_info_id and tco.user_id = tcor.user_id |
| | | <where> |
| | | <if test="params.stauts != null"> |
| | | AND tcor.stauts = #{params.stauts} |
| | | </if> |
| | | <if test="params.customerId != null and params.customerId != ''"> |
| | | AND tc.customer_id = #{params.customerId} |
| | | </if> |
| | | <if test="params.counsellingInfoName != null and params.counsellingInfoName != ''"> |
| | | AND tcus.nick_name LIKE CONCAT('%',#{params.counsellingInfoName},'%') |
| | | </if> |
| | | |
| | | </where> |
| | | ORDER BY tcor.reservation_begin_time DESC |
| | | |
| | | </select> |
| | | <select id="getCounsellingNumTotalByUserId" |
| | | resultType="cn.stylefeng.guns.modular.business.dto.UserCounsellingTotalDTO" |
| | | parameterType="cn.stylefeng.guns.modular.business.dto.request.UserCounsellingOrderReservationRequestDTO"> |
| | | SELECT IFNUll(SUM(tco.class_hours),0) totalNum,IFNULL(SUM(tco.residue_class_hours),0) residueClassHoursNum FROM t_counselling_user tco |
| | | INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id |
| | | INNER JOIN toc_customer tc ON tc.customer_id = tci.user_id |
| | | <where> |
| | | <if test="counsellingInfoName != null and counsellingInfoName != ''"> |
| | | AND tc.nick_name LIKE CONCAT('%',#{counsellingInfoName},'%') |
| | | </if> |
| | | <if test="customerId != null and customerId != ''"> |
| | | AND tco.user_id = #{customerId} |
| | | </if> |
| | | </where> |
| | | |
| | | |
| | | </select> |
| | | <select id="findReservationPage" |
| | | resultType="cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation"> |
| | | SELECT tcor.*,tco.phone,tc.nick_name userName,tcus.nick_name counsellingInfoName, |
| | | ( |
| | | SELECT count(1) FROM t_counselling_reservation_work WHERE is_delete = 0 and counselling_order_reservation_id = tcor.id |
| | | ) workNum |
| | | FROM t_counselling_order_reservation tcor |
| | | INNER JOIN t_counselling_order tcord ON tcord.id = tcor.counselling_order_id AND tcord.status_flag NOT IN (9,10) |
| | | INNER JOIN toc_customer tc on tc.customer_id = tcor.user_id |
| | | INNER JOIN t_counselling_info tci on tci.id = tcor.counselling_info_id |
| | | INNER JOIN toc_customer tcus on tcus.customer_id = tci.user_id |
| | | INNER JOIN t_counselling_user tco on tco.counselling_info_id = tcor.counselling_info_id and tco.user_id = tcor.user_id |
| | | <where> |
| | | AND ((tcor.reservation_type = 1 AND tcor.stauts != 5) OR (tcor.reservation_type = 2)) |
| | | <if test="params.stauts != null"> |
| | | AND tcor.stauts = #{params.stauts} |
| | | </if> |
| | | <if test="params.userName != null and params.userName != ''"> |
| | | AND tc.nick_name LIKE CONCAT('%',#{params.userName},'%') |
| | | </if> |
| | | <if test="params.counsellingInfoName != null and params.counsellingInfoName != ''"> |
| | | AND tcus.nick_name LIKE CONCAT('%',#{params.counsellingInfoName},'%') |
| | | </if> |
| | | <if test="params.phone != null and params.phone != ''"> |
| | | AND tco.phone LIKE CONCAT('%',#{params.phone},'%') |
| | | </if> |
| | | <if test="params.searchBeginTime != null and params.searchBeginTime != ''"> |
| | | AND tcor.reservation_begin_time >= #{params.searchBeginTime} |
| | | </if> |
| | | <if test="params.searchEndTime != null and params.searchEndTime != ''"> |
| | | AND tcor.reservation_end_time <= #{params.searchEndTime} |
| | | </if> |
| | | <if test="params.reservationType != null"> |
| | | AND tcor.reservation_type = #{params.reservationType} |
| | | </if> |
| | | <if test="params.counsellingInfoId != null"> |
| | | AND tcor.counselling_info_id = #{params.counsellingInfoId} |
| | | </if> |
| | | <if test="params.counsellingOrderId != null"> |
| | | AND tcor.counselling_order_id = #{params.counsellingOrderId} |
| | | </if> |
| | | <if test="params.customerId != null"> |
| | | AND tcor.user_id = #{params.customerId} |
| | | </if> |
| | | </where> |
| | | ORDER BY tcor.create_time DESC |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingReservationRecordMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingReservationRecord"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_order_reservation_id" property="counsellingOrderReservationId" /> |
| | | <result column="content" property="content" /> |
| | | <result column="image_urls" property="imageUrls" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_order_reservation_id, content, image_urls, create_user, is_delete, create_time, update_user, update_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingReservationWorkMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingReservationWork"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_order_reservation_id" property="counsellingOrderReservationId" /> |
| | | <result column="work_content" property="workContent" /> |
| | | <result column="work_image_urls" property="workImageUrls" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_order_reservation_id, work_content, work_image_urls, create_user, is_delete, create_time, update_user, update_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingSetMealMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_info_id" property="counsellingInfoId" /> |
| | | <result column="set_meal_type" property="setMealType" /> |
| | | <result column="period_validity" property="periodValidity" /> |
| | | <result column="class_hours" property="classHours" /> |
| | | <result column="is_give" property="isGive" /> |
| | | <result column="price" property="price" /> |
| | | <result column="original_price" property="originalPrice" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_info_id, set_meal_type, period_validity, class_hours, is_give, price, original_price |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingSpecialTimeConfigMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingSpecialTimeConfig"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_info_id" property="counsellingInfoId" /> |
| | | <result column="special_day" property="specialDay" /> |
| | | <result column="special_begin_time_point" property="specialBeginTimePoint" /> |
| | | <result column="special_end_time_point" property="specialEndTimePoint" /> |
| | | <result column="is_cancel_day" property="isCancelDay" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_info_id, special_day, special_begin_time_point, special_end_time_point, is_cancel_day |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingTagMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingTag"> |
| | | <id column="id" property="id" /> |
| | | <result column="tag_name" property="tagName" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, tag_name, create_user, is_delete, create_time, update_user, update_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingTimeConfigMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_info_id" property="counsellingInfoId" /> |
| | | <result column="week_day" property="weekDay" /> |
| | | <result column="begin_time_point" property="beginTimePoint" /> |
| | | <result column="end_time_point" property="endTimePoint" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_info_id, week_day, begin_time_point, end_time_point |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CounsellingUserMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingUser"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_info_id" property="counsellingInfoId" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="consultant_user_id" property="consultantUserId" /> |
| | | <result column="companion_user_id" property="companionUserId" /> |
| | | <result column="phone" property="phone" /> |
| | | <result column="effective_begin_time" property="effectiveBeginTime" /> |
| | | <result column="effective_end_time" property="effectiveEndTime" /> |
| | | <result column="class_hours" property="classHours" /> |
| | | <result column="residue_class_hours" property="residueClassHours" /> |
| | | <result column="user_info_json" property="userInfoJson" /> |
| | | <result column="status_flag" property="statusFlag" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | <result column="first_appointment_date" property="firstAppointmentDate" /> |
| | | <result column="first_appointment_times" property="firstAppointmentTimes" /> |
| | | <result column="is_first_appointment" property="isFirstAppointment" /> |
| | | <result column="counsellingName" property="counsellingName"/> |
| | | <result column="userName" property="userName"/> |
| | | <result column="lastTime" property="lastTime"/> |
| | | <result column="coverImageUrl" property="coverImageUrl"/> |
| | | <result column="listingStatus" property="listingStatus"/> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_info_id, user_id, consultant_user_id, companion_user_id, phone, effective_begin_time, effective_end_time, class_hours, residue_class_hours, user_info_json, status_flag, is_delete, create_time, create_user, update_user, update_time, first_appointment_date, first_appointment_times, is_first_appointment |
| | | </sql> |
| | | <select id="findCounsellingUserPage" resultMap="BaseResultMap"> |
| | | SELECT |
| | | tco.*,toci.nick_name counsellingName,toc1.nick_name userName,toc2.nick_name companionUserName,toc3.nick_name consultantUserName,tci.counselling_type counsellingType, |
| | | tci.cover_image_url coverImageUrl,tci.listing_status listingStatus,tcor.lastTime |
| | | FROM t_counselling_user tco |
| | | LEFT JOIN toc_customer toc1 ON toc1.customer_id = tco.user_id |
| | | LEFT JOIN toc_customer toc2 ON toc2.customer_id = tco.companion_user_id |
| | | LEFT JOIN toc_customer toc3 ON toc3.customer_id = tco.consultant_user_id |
| | | LEFT JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id |
| | | LEFT JOIN toc_customer toci ON toci.customer_id = tci.user_id |
| | | LEFT JOIN ( |
| | | SELECT counselling_info_id,user_id,MAX(reservation_begin_time) lastTime FROM |
| | | t_counselling_order_reservation |
| | | WHERE stauts IN (2,3,4) |
| | | GROUP BY counselling_info_id,user_id |
| | | ) tcor ON tcor.counselling_info_id = tco.counselling_info_id and tcor.user_id = tco.user_id |
| | | <where> |
| | | AND tco.is_delete = 0 AND tco.status_flag NOT IN (0,9,10) |
| | | <if test="param.counsellingName != null and param.counsellingName != ''"> |
| | | AND toci.nick_name LIKE CONCAT('%',#{param.counsellingName},'%') |
| | | </if> |
| | | <if test="param.userName != null and param.userName != ''"> |
| | | AND toc1.nick_name LIKE CONCAT('%',#{param.userName},'%') |
| | | </if> |
| | | <if test="param.companionUserName != null and param.companionUserName != ''"> |
| | | AND toc2.nick_name LIKE CONCAT('%',#{param.companionUserName},'%') |
| | | </if> |
| | | <if test="param.consultantUserName != null and param.consultantUserName != ''"> |
| | | AND toc3.nick_name LIKE CONCAT('%',#{param.consultantUserName},'%') |
| | | </if> |
| | | <if test="param.phone != null and param.phone != ''"> |
| | | AND tco.phone LIKE CONCAT('%',#{param.phone},'%') |
| | | </if> |
| | | |
| | | <if test="param.statusFlag != null"> |
| | | AND tco.status_flag = #{param.statusFlag} |
| | | </if> |
| | | <if test="param.userId != null"> |
| | | AND tco.user_id = #{param.userId} |
| | | </if> |
| | | <if test="param.counsellingInfoId != null"> |
| | | AND tco.counselling_info_id = #{param.counsellingInfoId} |
| | | </if> |
| | | <if test="param.customerId != null"> |
| | | AND ( tco.companion_user_id = #{param.customerId} OR tco.consultant_user_id = #{param.customerId} OR tci.user_id = #{param.customerId} ) |
| | | </if> |
| | | </where> |
| | | ORDER BY tco.create_time DESC |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CourseChapterMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseChapter"> |
| | | <id column="id" property="id" /> |
| | | <result column="course_id" property="courseId" /> |
| | | <result column="chapter_name" property="chapterName" /> |
| | | <result column="parent_id" property="parentId" /> |
| | | <result column="video_name" property="videoName" /> |
| | | <result column="video_url" property="videoUrl" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, course_id, chapter_name, parent_id, video_name, video_url, create_user, is_delete, create_time, update_user, update_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CourseMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.Course"> |
| | | <id column="id" property="id" /> |
| | | <result column="course_name" property="courseName" /> |
| | | <result column="course_tag_ids" property="courseTagIds" /> |
| | | <result column="course_introduction" property="courseIntroduction" /> |
| | | <result column="course_validity" property="courseValidity" /> |
| | | <result column="price" property="price" /> |
| | | <result column="original_price" property="originalPrice" /> |
| | | <result column="cover_picture_url" property="coverPictureUrl" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | <result column="course_detail_url" property="courseDetailUrl" /> |
| | | <result column="course_content" property="courseContent" /> |
| | | <result column="total_score" property="totalScore" /> |
| | | <result column="listing_status" property="listingStatus" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, course_name, course_tag_ids, course_introduction, course_validity, price, original_price, cover_picture_url, create_user, is_delete, create_time, update_user, update_time, course_detail_url, course_content, total_score, listing_status |
| | | </sql> |
| | | |
| | | <select id="getCountCourse" resultType="java.lang.Long"> |
| | | select count(1) from t_course |
| | | where is_delete = 0 |
| | | <if test="list != null"> |
| | | and |
| | | <foreach collection="list" item="item" open="(" close=")" separator="or"> |
| | | FIND_IN_SET(#{item},course_tag_ids) |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CourseOrderMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseOrder"> |
| | | <id column="id" property="id" /> |
| | | <result column="course_id" property="courseId" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="course_user_id" property="courseUserId" /> |
| | | <result column="tutoring_user_id" property="tutoringUserId" /> |
| | | <result column="phone" property="phone" /> |
| | | <result column="effective_begin_time" property="effectiveBeginTime" /> |
| | | <result column="effective_end_time" property="effectiveEndTime" /> |
| | | <result column="total_time" property="totalTime" /> |
| | | <result column="learned_time" property="learnedTime" /> |
| | | <result column="status_flag" property="statusFlag" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="order_no" property="orderNo" /> |
| | | <result column="order_amount" property="orderAmount" /> |
| | | <result column="pay_amount" property="payAmount" /> |
| | | <result column="pay_time" property="payTime" /> |
| | | <result column="pay_type" property="payType" /> |
| | | <result column="transaction_no" property="transactionNo" /> |
| | | <result column="refund_amount" property="refundAmount" /> |
| | | <result column="refund_time" property="refundTime" /> |
| | | <result column="course_json" property="courseJson" /> |
| | | <result column="update_user" property="updateUser"/> |
| | | <result column="update_time" property="updateTime"/> |
| | | </resultMap> |
| | | <resultMap id="BaseDtoMap" type="cn.stylefeng.guns.modular.business.dto.CourseOrderResponseDTO"> |
| | | <result column="tutoringUserName" property="tutoringUserName"/> |
| | | <result column="userName" property="userName"/> |
| | | <result column="courseName" property="courseName"/> |
| | | <result column="courseUserName" property="courseUserName"/> |
| | | <result column="listingStatus" property="listingStatus"/> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, course_id, user_id, course_user_id, tutoring_user_id, phone, effective_begin_time, effective_end_time, total_time, learned_time, status_flag, is_delete, create_time, create_user, order_no, order_amount, pay_amount, pay_time, pay_type, transaction_no, refund_amount, refund_time, course_json |
| | | </sql> |
| | | |
| | | <select id="findCounseOrderPage" resultMap="BaseDtoMap"> |
| | | SELECT |
| | | tco.*,toc1.nick_name userName,toc2.nick_name courseUserName,toc3.nick_name tutoringUserName,tc.course_name courseName,tc.listing_status listingStatus |
| | | FROM t_course_order tco |
| | | LEFT JOIN toc_customer toc1 ON toc1.customer_id = tco.user_id |
| | | LEFT JOIN toc_customer toc2 ON toc2.customer_id = tco.course_user_id |
| | | LEFT JOIN toc_customer toc3 ON toc3.customer_id = tco.tutoring_user_id |
| | | LEFT JOIN t_course tc ON tc.id = tco.course_id |
| | | <where> |
| | | AND tco.is_delete = 0 |
| | | |
| | | <if test="param.userName != null and param.userName != ''"> |
| | | AND toc1.nick_name LIKE CONCAT('%',#{param.userName},'%') |
| | | </if> |
| | | <if test="param.courseUserName != null and param.courseUserName != ''"> |
| | | AND toc2.nick_name LIKE CONCAT('%',#{param.courseUserName},'%') |
| | | </if> |
| | | <if test="param.tutoringUserName != null and param.tutoringUserName != ''"> |
| | | AND toc3.nick_name LIKE CONCAT('%',#{param.tutoringUserName},'%') |
| | | </if> |
| | | <if test="param.phone != null and param.phone != ''"> |
| | | |
| | | AND tco.phone LIKE CONCAT('%',#{param.phone},'%') |
| | | </if> |
| | | <if test="param.statusFlag != null"> |
| | | AND tco.status_flag = #{param.statusFlag} |
| | | </if> |
| | | <if test="param.userId != null"> |
| | | AND tco.user_id = #{param.userId} |
| | | </if> |
| | | <if test="param.courseName != null and param.courseName != ''"> |
| | | |
| | | AND tc.course_name LIKE CONCAT('%',#{param.courseName},'%') |
| | | </if> |
| | | <if test="param.showState != null"> |
| | | <choose> |
| | | <when test="param.showState == 0"> |
| | | AND tco.status_flag = 0 |
| | | </when> |
| | | <when test="param.showState == 2"> |
| | | AND tco.status_flag = 1 AND NOW() < tco.effective_end_time |
| | | </when> |
| | | <when test="param.showState == 1"> |
| | | AND tco.status_flag = 2 |
| | | </when> |
| | | <otherwise> |
| | | AND tco.status_flag = #{param.showState} |
| | | </otherwise> |
| | | </choose> |
| | | </if> |
| | | <if test="param.statuFlags != null and param.statuFlags != ''"> |
| | | AND tco.status_flag IN (${param.statuFlags}) |
| | | </if> |
| | | </where> |
| | | |
| | | ORDER BY tco.create_time DESC |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CourseStudyNoteMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseStudyNote"> |
| | | <id column="id" property="id" /> |
| | | <result column="course_id" property="courseId" /> |
| | | <result column="course_order_id" property="courseOrderId" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="note_content" property="noteContent" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, course_id, course_order_id, user_id, note_content, create_user, is_delete, create_time, update_user, update_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CourseTagMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseTag"> |
| | | <id column="id" property="id" /> |
| | | <result column="tag_name" property="tagName" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, tag_name, create_user, is_delete, create_time, update_user, update_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CourseUserLearnedMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseUserLearned"> |
| | | <id column="id" property="id" /> |
| | | <result column="course_id" property="courseId" /> |
| | | <result column="course_chapter_id" property="courseChapterId" /> |
| | | <result column="course_order_id" property="courseOrderId" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="study_time" property="studyTime" /> |
| | | <result column="course_study_time" property="courseStudyTime" /> |
| | | <result column="begin_time" property="beginTime" /> |
| | | <result column="end_time" property="endTime" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, course_id, course_chapter_id, course_order_id, user_id, study_time, course_study_time, begin_time, end_time, update_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.CouserChapterLearningRateMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate"> |
| | | <id column="id" property="id" /> |
| | | <result column="course_id" property="courseId" /> |
| | | <result column="course_chapter_id" property="courseChapterId" /> |
| | | <result column="course_order_id" property="courseOrderId" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="course_study_time" property="courseStudyTime" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | <result column="study_status" property="studyStatus" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, course_id, course_chapter_id, course_order_id, user_id, course_study_time, update_time, study_status |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.HelpMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.Help"> |
| | | <id column="id" property="id" /> |
| | | <result column="status_flag" property="statusFlag" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="sort" property="sort" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="title" property="title" /> |
| | | <result column="content" property="content" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, status_flag, is_delete, sort, create_time, create_user, title, content |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.ImGroupMapper"> |
| | | |
| | | <select id="getMyGroup" resultType="cn.stylefeng.guns.modular.business.entity.ImGroup"> |
| | | SELECT * FROM im_group o |
| | | LEFT JOIN im_group_user gu ON gu.group_id = o.id |
| | | LEFT JOIN toc_customer tu ON tu.customer_id = gu.user_id |
| | | <where> |
| | | o.is_delete = 0 AND gu.is_delete = 0 |
| | | <if test="groupType != null"> |
| | | AND o.group_type = #{groupType} |
| | | </if> |
| | | <if test="orderId != null"> |
| | | AND o.order_id = #{orderId} |
| | | </if> |
| | | <if test="statusFlag != null"> |
| | | AND o.status_flag = #{statusFlag} |
| | | </if> |
| | | <if test="userId != null"> |
| | | AND gu.user_id = #{userId} |
| | | </if> |
| | | <if test="groupName != null and groupName != ''"> |
| | | AND o.`name` LIKE CONCAT('%',#{groupName},'%') |
| | | </if> |
| | | <if test="nickName != null and nickName != ''"> |
| | | AND tu.nick_name LIKE CONCAT('%',#{nickName},'%') |
| | | </if> |
| | | </where> |
| | | GROUP BY o.id |
| | | </select> |
| | | |
| | | <select id="groupUser" resultType="cn.stylefeng.guns.modular.business.dto.ImGroupUserDto"> |
| | | SELECT |
| | | o.*, u.nick_name, u.avatar, u.user_type, u.im_token, u.post_ids |
| | | FROM |
| | | im_group_user o |
| | | LEFT JOIN |
| | | toc_customer u ON o.user_id = u.customer_id |
| | | <where> |
| | | o.is_delete = 0 |
| | | <if test="groupId != null"> |
| | | AND o.group_id = #{groupId} |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.ImGroupUserMapper"> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.ImNoticeMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.ImNotice"> |
| | | <id column="id" property="id" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="user_type" property="userType" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="type" property="type" /> |
| | | <result column="business_id" property="businessId" /> |
| | | <result column="title" property="title" /> |
| | | <result column="content" property="content" /> |
| | | <result column="read_flag" property="readFlag" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, is_delete, create_time, user_type, user_id, type, business_id, title, content, read_flag |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.ImUserStatusMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.ImUserStatus"> |
| | | <id column="id" property="id" /> |
| | | <result column="userid" property="userid" /> |
| | | <result column="status" property="status" /> |
| | | <result column="os" property="os" /> |
| | | <result column="time" property="time" /> |
| | | <result column="clientIp" property="clientIp" /> |
| | | <result column="sessionId" property="sessionId" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, userid, status, os, time, clientIp, sessionId |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalAnalysisSpecialTimeConfigMapper"> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalAnalysisTimeConfigMapper"> |
| | | |
| | | <select id="getWorkerPage" resultType="cn.stylefeng.guns.modular.business.dto.MentalAnalysisTimeConfigPageDTO"> |
| | | SELECT |
| | | tu.customer_id AS counsellingInfoId, |
| | | tu.nick_name AS nickName, |
| | | tu.mental_analysis_status |
| | | FROM |
| | | t_mental_analysis_time_config o |
| | | LEFT JOIN toc_customer tu ON tu.customer_id = o.counselling_info_id |
| | | <where> |
| | | <if test="nickName != null and nickName != ''"> |
| | | AND tu.nick_name LIKE CONCAT('%',#{nickName},'%') |
| | | </if> |
| | | </where> |
| | | GROUP BY counselling_info_id |
| | | </select> |
| | | <select id="getWorkerListByAppointmentTime" resultType="cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig"> |
| | | SELECT |
| | | tc.* |
| | | FROM |
| | | t_mental_analysis_time_config tc |
| | | LEFT JOIN toc_customer u ON tc.counselling_info_id = u.customer_id |
| | | LEFT JOIN t_counselling_special_time_config stc ON stc.counselling_info_id = u.customer_id |
| | | <where> |
| | | <if test="mentalAnalysisStatus != null"> |
| | | AND u.mental_analysis_status = #{mentalAnalysisStatus} |
| | | </if> |
| | | <if test="weekDay != null"> |
| | | AND tc.week_day = #{weekDay} |
| | | </if> |
| | | <if test="beginTimePoint != null and beginTimePoint != ''"> |
| | | AND tc.begin_time_point = #{beginTimePoint} |
| | | </if> |
| | | <if test="endTimePoint != null and endTimePoint != ''"> |
| | | AND tc.end_time_point = #{endTimePoint} |
| | | </if> |
| | | <if test="appointmentDay != null and appointmentDay != ''"> |
| | | AND u.customer_id NOT IN ( |
| | | SELECT counselling_info_id FROM t_counselling_special_time_config stc |
| | | WHERE stc.special_day <![CDATA[ <> ]]> #{appointmentDay} AND stc.is_cancel_day = 1 |
| | | ) |
| | | </if> |
| | | </where> |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalAnalysisTimeMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalAnalysisTime"> |
| | | <id column="id" property="id" /> |
| | | <result column="counselling_info_id" property="counsellingInfoId" /> |
| | | <result column="week_day" property="weekDay" /> |
| | | <result column="begin_time_point" property="beginTimePoint" /> |
| | | <result column="end_time_point" property="endTimePoint" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, counselling_info_id, week_day, begin_time_point, end_time_point, is_delete |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalAppointmentMapper"> |
| | | |
| | | <select id="myMentalAppointment" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestMyMentalAppointmentDTO"> |
| | | SELECT |
| | | o.*, |
| | | wu.nick_name workerNickName |
| | | FROM |
| | | t_mental_appointment o |
| | | LEFT JOIN toc_customer wu ON o.worker_id = wu.customer_id |
| | | <where> |
| | | <if test="statusFlagList != null and statusFlagList.size != 0"> |
| | | AND o.status_flag IN |
| | | <foreach item="item" collection="statusFlagList" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="userId != null"> |
| | | AND o.user_id = #{userId} |
| | | </if> |
| | | <if test="consultantName != null"> |
| | | AND wu.nick_name LIKE CONCAT('%', #{consultantName}, '%') |
| | | </if> |
| | | </where> |
| | | ORDER BY o.create_time DESC |
| | | </select> |
| | | |
| | | <select id="mentalAnalysisTimeConfigSchedule" resultType="cn.stylefeng.guns.modular.business.dto.MentalAppointmentPageDTO"> |
| | | SELECT |
| | | o.id, |
| | | o.type, |
| | | o.status_flag, |
| | | o.appointment_day, |
| | | o.begin_time_point, |
| | | o.end_time_point, |
| | | o.user_id user_id, |
| | | o.user_name userNickName, |
| | | o.phone userTelephone, |
| | | wu.customer_id worker_id, |
| | | wu.nick_name worker_nick_name, |
| | | wu.telephone worker_telephone |
| | | FROM |
| | | t_mental_appointment o |
| | | LEFT JOIN toc_customer wu ON o.worker_id = wu.customer_id |
| | | <where> AND o.is_delete = 0 |
| | | <if test="counsellingInfoId != null"> |
| | | AND o.worker_id = #{counsellingInfoId} |
| | | </if> |
| | | <if test="statusFlag != null"> |
| | | AND o.status_flag = #{statusFlag} |
| | | </if> |
| | | <if test="statusFlag == null and statusFlagList != null and statusFlagList.size != 0"> |
| | | AND o.status_flag IN |
| | | <foreach item="item" collection="statusFlagList" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="searchBeginTime != null and searchBeginTime != ''"> |
| | | AND o.appointment_day <![CDATA[ >= ]]> #{searchBeginTime} |
| | | </if> |
| | | <if test="searchEndTime != null and searchEndTime != ''"> |
| | | AND o.appointment_day <![CDATA[ <= ]]> #{searchEndTime} |
| | | </if> |
| | | <if test="workerNickName != null and workerNickName != ''"> |
| | | AND wu.nick_name LIKE CONCAT( '%', #{workerNickName}, '%' ) |
| | | </if> |
| | | <if test="userNickName != null and userNickName != ''"> |
| | | AND o.user_name LIKE CONCAT( '%', #{userNickName}, '%' ) |
| | | </if> |
| | | <if test="userTelephone != null and userTelephone != ''"> |
| | | AND o.phone LIKE CONCAT( '%', #{userTelephone}, '%' ) |
| | | </if> |
| | | </where> |
| | | ORDER BY |
| | | o.create_time DESC |
| | | </select> |
| | | |
| | | <select id="userMentalAppointmentPage" resultType="cn.stylefeng.guns.modular.business.dto.UserMentalAppointmentPageResponseDTO"> |
| | | SELECT * FROM t_mental_appointment o |
| | | LEFT JOIN toc_customer tw ON tw.customer_id = o.worker_id |
| | | <where> |
| | | <if test="userId != null"> |
| | | AND o.user_id = #{userId} |
| | | </if> |
| | | <if test="userId != null"> |
| | | AND o.status_flag = #{statusFlag} |
| | | </if> |
| | | <if test="name != null and name != ''"> |
| | | AND tw.nick_name LIKE CONCAT('%',#{name},'%') |
| | | </if> |
| | | <if test="telephone != null and telephone != ''"> |
| | | AND tw.telephone LIKE CONCAT('%',#{telephone},'%') |
| | | </if> |
| | | </where> |
| | | ORDER BY o.create_time DESC |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalTestClassMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestClass"> |
| | | <id column="id" property="id" /> |
| | | <result column="name" property="name" /> |
| | | <result column="status_flag" property="statusFlag" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="sort" property="sort" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="create_user" property="createUser" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, name, status_flag, is_delete, sort, create_time, create_user |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalTestOptionMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestOption"> |
| | | <id column="id" property="id" /> |
| | | <result column="topic_id" property="topicId" /> |
| | | <result column="question_id" property="questionId" /> |
| | | <result column="item_no" property="itemNo" /> |
| | | <result column="score" property="score" /> |
| | | <result column="content" property="content" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, topic_id, question_id, item_no, score, content |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalTestQuestionMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestQuestion"> |
| | | <id column="id" property="id" /> |
| | | <result column="topic_id" property="topicId" /> |
| | | <result column="title" property="title" /> |
| | | <result column="type" property="type" /> |
| | | <result column="item_no" property="itemNo" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, topic_id, title, type, item_no |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalTestRecordMapper"> |
| | | |
| | | <select id="myTestTopic" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO"> |
| | | SELECT |
| | | o.*, |
| | | tt.status_flag topicStatus, |
| | | tt.title, |
| | | tt.class_id, |
| | | tt.intro, |
| | | tt.image, |
| | | tt.test_type, |
| | | tt.test_amount, |
| | | tt.consult_one, |
| | | tt.consult_amount, |
| | | tt.test_people_num, |
| | | tt.test_set_num |
| | | FROM |
| | | t_mental_test_record o |
| | | LEFT JOIN t_mental_test_topic tt ON tt.id = o.topic_id |
| | | <where> |
| | | <if test="userId != null"> |
| | | AND o.user_id = #{userId} |
| | | </if> |
| | | <if test="topicId != null"> |
| | | AND o.topic_id = #{topicId} |
| | | </if> |
| | | </where> |
| | | ORDER BY o.create_time DESC |
| | | </select> |
| | | |
| | | <select id="myTestRecordTopicByMentalAppointmentId" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO"> |
| | | SELECT |
| | | o.*, |
| | | tt.status_flag topicStatus, |
| | | tt.title, |
| | | tt.class_id, |
| | | tt.intro, |
| | | tt.image, |
| | | tt.test_type, |
| | | tt.test_amount, |
| | | tt.consult_one, |
| | | tt.consult_amount, |
| | | tt.test_people_num, |
| | | tt.test_set_num |
| | | FROM |
| | | t_mental_test_record o |
| | | LEFT JOIN t_mental_test_topic tt ON tt.id = o.topic_id |
| | | <where> |
| | | <if test="mentalAppointmentId != null"> |
| | | AND o.mental_appointment_id = #{mentalAppointmentId} |
| | | </if> |
| | | <if test="mentalAppointmentIdList != null"> |
| | | AND o.mental_appointment_id IN |
| | | <foreach collection="mentalAppointmentIdList" item="item" open="(" close=")" separator=","> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | ORDER BY o.create_time DESC |
| | | </select> |
| | | |
| | | <select id="myTestOrder" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestMyTestOrderDTO"> |
| | | SELECT |
| | | o.*, |
| | | tt.id topicId, |
| | | tt.status_flag topicStatus, |
| | | tt.title, |
| | | tt.class_id, |
| | | tt.intro, |
| | | tt.image, |
| | | tt.test_type, |
| | | tt.test_amount, |
| | | tt.consult_one, |
| | | tt.consult_amount, |
| | | tt.test_people_num, |
| | | tt.test_set_num |
| | | FROM |
| | | t_order_mental_test o |
| | | LEFT JOIN t_mental_test_topic tt ON tt.id = o.goods_id |
| | | <where> |
| | | AND o.status_flag = 1 AND ( ( tt.test_type = 0 AND o.test_flag = 1 ) OR tt.test_type = 1 OR o.is_back = 1 ) |
| | | <if test="userId != null"> |
| | | AND o.user_id = #{userId} |
| | | </if> |
| | | <if test="topicId != null"> |
| | | AND o.goods_id = #{topicId} |
| | | </if> |
| | | </where> |
| | | ORDER BY o.create_time DESC |
| | | </select> |
| | | |
| | | <select id="getPage" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestRecordPageDTO"> |
| | | SELECT |
| | | tt.*, |
| | | o.create_time, |
| | | tu.nick_name, |
| | | tu.telephone |
| | | FROM |
| | | t_mental_test_record o |
| | | LEFT JOIN t_mental_test_topic tt ON tt.id = o.topic_id |
| | | LEFT JOIN toc_customer tu ON tu.customer_id = o.user_id |
| | | <where> |
| | | <if test="title != null and title != ''"> |
| | | AND tt.title LIKE CONCAT('%', #{title}, '%') |
| | | </if> |
| | | <if test="testType != null"> |
| | | AND tt.test_type = #{testType} |
| | | </if> |
| | | <if test="nickName != null and nickName != ''"> |
| | | AND tu.nick_name LIKE CONCAT('%', #{nickName}, '%') |
| | | </if> |
| | | <if test="telephone != null and telephone != ''"> |
| | | AND tu.telephone LIKE CONCAT('%', #{telephone}, '%') |
| | | </if> |
| | | </where> |
| | | ORDER BY o.create_time DESC |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalTestResultMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestResult"> |
| | | <id column="id" property="id" /> |
| | | <result column="answer_no" property="answerNo" /> |
| | | <result column="topic_id" property="topicId" /> |
| | | <result column="question_id" property="questionId" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="item_no" property="itemNo" /> |
| | | <result column="score" property="score" /> |
| | | <result column="create_time" property="createTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, answer_no, topic_id, question_id, user_id, item_no, score, create_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalTestResultSetMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestResultSet"> |
| | | <id column="id" property="id" /> |
| | | <result column="topic_id" property="topicId" /> |
| | | <result column="result_calculate_mode" property="resultCalculateMode" /> |
| | | <result column="min" property="min" /> |
| | | <result column="max" property="max" /> |
| | | <result column="item_no" property="itemNo" /> |
| | | <result column="item_name" property="itemName" /> |
| | | <result column="content" property="content" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, topic_id, result_calculate_mode, min, max, item_no, item_name, content |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.MentalTestTopicMapper"> |
| | | |
| | | <select id="topicPage" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestTopicPageDTO"> |
| | | SELECT * FROM t_mental_test_topic o |
| | | <where> |
| | | AND status_flag = 1 |
| | | AND is_delete = 0 |
| | | <if test="classIdList != null and classIdList.size != 0"> |
| | | AND ( 1 = 2 |
| | | <foreach collection="classIdList" item="item" index="index" separator=","> |
| | | OR FIND_IN_SET( #{item}, class_id ) > 0 |
| | | </foreach> |
| | | ) |
| | | </if> |
| | | <if test="title != null and title != ''"> |
| | | AND o.title LIKE CONCAT('%', #{title}, '%') |
| | | </if> |
| | | <if test="testType != null"> |
| | | AND o.test_type = #{testType} |
| | | </if> |
| | | <if test="testFlag != null"> |
| | | AND o.id <if test="testFlag == 0">NOT</if> IN (SELECT topic_id FROM t_mental_test_result WHERE user_id = #{userId}) |
| | | </if> |
| | | <if test="statusFlag != null"> |
| | | AND o.status_flag = #{statusFlag} |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.OrderConsultOneMapper"> |
| | | |
| | | <select id="getStatOrderList" resultType="java.util.Map"> |
| | | SELECT |
| | | DATE_FORMAT( create_time, #{dateFormat} ) `time`, |
| | | SUM( order_amount ) `data`, |
| | | COUNT( 1 ) `number` |
| | | FROM |
| | | t_order_consult_one o |
| | | <where> |
| | | <if test="statusList != null and statusList.size != 0"> |
| | | AND o.status_flag IN |
| | | <foreach collection="statusList" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="workerId != null"> |
| | | AND o.goods_id = #{workerId} |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND o.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND o.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | </where> |
| | | GROUP BY `time` |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.OrderMentalTestMapper"> |
| | | |
| | | <select id="getPage" resultType="cn.stylefeng.guns.modular.business.dto.OrderMentalTestPageDTO"> |
| | | SELECT |
| | | o.id id, o.order_no, |
| | | o.create_time test_create_time, |
| | | tt.*, tt.id topicId, |
| | | tu.nick_name, tu.telephone |
| | | FROM |
| | | t_order_mental_test o |
| | | LEFT JOIN t_mental_test_topic tt ON o.goods_id = tt.id |
| | | LEFT JOIN toc_customer tu ON tu.customer_id = o.user_id |
| | | <where> |
| | | <if test="adminView != null and adminView == 1"> |
| | | AND o.status_flag = 1 AND ( ( tt.test_type = 0 AND o.test_flag = 1 ) OR tt.test_type = 1 OR o.is_back = 1 ) |
| | | </if> |
| | | <if test="title != null and title != ''"> |
| | | AND tt.title LIKE CONCAT('%', #{title}, '%') |
| | | </if> |
| | | <if test="testType != null"> |
| | | AND tt.test_type = #{testType} |
| | | </if> |
| | | <if test="statusFlag != null"> |
| | | AND o.status_flag = #{statusFlag} |
| | | </if> |
| | | <if test="nickName != null and nickName != ''"> |
| | | AND tu.nick_name LIKE CONCAT('%', #{nickName}, '%') |
| | | </if> |
| | | <if test="telephone != null and telephone != ''"> |
| | | AND tu.telephone LIKE CONCAT('%', #{telephone}, '%') |
| | | </if> |
| | | </where> |
| | | ORDER BY o.create_time DESC |
| | | </select> |
| | | |
| | | <select id="getInfoById" resultType="cn.stylefeng.guns.modular.business.dto.OrderMentalTestDetailDTO"> |
| | | SELECT |
| | | o.*, |
| | | t.*, t.id topicId, |
| | | tr.*, |
| | | worker.nick_name consultWorkerName |
| | | FROM |
| | | t_order_mental_test o |
| | | LEFT JOIN t_mental_test_topic t ON o.goods_id = t.id |
| | | LEFT JOIN t_mental_test_record tr ON tr.answer_no = o.order_no |
| | | LEFT JOIN toc_customer worker ON worker.customer_id = tr.consult_worker_id |
| | | <where> |
| | | AND o.id = #{id} |
| | | </where> |
| | | LIMIT 1 |
| | | </select> |
| | | |
| | | <select id="getStatOrderList" resultType="java.util.Map"> |
| | | SELECT |
| | | DATE_FORMAT( create_time, #{dateFormat} ) `time`, |
| | | SUM( order_amount ) `data`, |
| | | COUNT( 1 ) `number` |
| | | FROM |
| | | t_order_mental_test o |
| | | <where> |
| | | <if test="statusList != null and statusList.size != 0"> |
| | | AND o.status_flag IN |
| | | <foreach collection="statusList" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="workerId != null"> |
| | | AND o.user_id = #{workerId} |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND o.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND o.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | </where> |
| | | GROUP BY `time` |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.PsychologicalColumnMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.PsychologicalColumn"> |
| | | <id column="id" property="id" /> |
| | | <result column="article_title" property="articleTitle" /> |
| | | <result column="article_content" property="articleContent" /> |
| | | <result column="release_time" property="releaseTime" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | <result column="read_num" property="readNum" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, article_title, article_content, release_time, create_user, is_delete, create_time, update_user, update_time, read_num |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.PsychologicalReadMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.PsychologicalRead"> |
| | | <id column="id" property="id" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="psychological_column_id" property="psychologicalColumnId" /> |
| | | <result column="read_time" property="readTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, user_id, psychological_column_id, read_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.StoreAppointmentMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.StoreAppointment"> |
| | | <id column="id" property="id" /> |
| | | <result column="status_flag" property="statusFlag" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="user_name" property="userName" /> |
| | | <result column="phone" property="phone" /> |
| | | <result column="remark" property="remark" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, status_flag, is_delete, create_time, user_id, user_name, phone, remark |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.SystemSetMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.SystemSet"> |
| | | <id column="id" property="id" /> |
| | | <result column="key_str" property="keyStr" /> |
| | | <result column="content" property="content" /> |
| | | <result column="remark" property="remark" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, key_str, content, remark |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.TotalReportMapper"> |
| | | |
| | | <select id="courseTotalData" resultType="java.util.Map" parameterType="cn.stylefeng.guns.modular.business.dto.request.TotalRequest"> |
| | | SELECT DATE_FORMAT( tco.create_time, #{dateFormat} ) time,IFNULL(SUM(tco.pay_amount),0) data,count(1) number FROM t_course_order tco |
| | | WHERE |
| | | tco.status_flag IN (1,2) |
| | | <if test="userId != null"> |
| | | AND ( tco.course_user_id = #{userId} OR tco.tutoring_user_id = #{userId} ) |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND tco.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND tco.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | GROUP BY time |
| | | </select> |
| | | |
| | | <select id="mentalTestTotalData" resultType="java.util.Map" parameterType="cn.stylefeng.guns.modular.business.dto.request.TotalRequest"> |
| | | SELECT DATE_FORMAT( o.create_time, #{dateFormat} ) time,IFNULL(SUM(o.pay_amount),0) data,count(1) number FROM |
| | | t_order_mental_test o |
| | | WHERE |
| | | o.status_flag = 1 |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND o.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND o.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | GROUP BY time |
| | | </select> |
| | | |
| | | <select id="orderConsultOneTotalData" resultType="java.util.Map" parameterType="cn.stylefeng.guns.modular.business.dto.request.TotalRequest"> |
| | | SELECT DATE_FORMAT( o.create_time, #{dateFormat} ) time,IFNULL(SUM(o.pay_amount),0) data,count(1) number FROM |
| | | t_order_consult_one o |
| | | WHERE |
| | | o.status_flag = 1 |
| | | <if test="userId != null"> |
| | | AND ( o.goods_id = #{userId} ) |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND o.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND o.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | GROUP BY time |
| | | </select> |
| | | |
| | | <select id="counsellingTotalData" resultType="java.util.Map" |
| | | parameterType="cn.stylefeng.guns.modular.business.dto.request.TotalRequest"> |
| | | SELECT DATE_FORMAT( tco.create_time, #{dateFormat} ) time,IFNULL(SUM(tco.pay_amount),0) data,count(1) number FROM t_counselling_order tco |
| | | INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id |
| | | WHERE |
| | | tco.status_flag IN (1,2) |
| | | <if test="userId != null"> |
| | | AND (tci.user_id = #{userId} OR tco.companion_user_id = #{userId} OR tco.consultant_user_id = #{userId} ) |
| | | </if> |
| | | |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND tco.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND tco.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | GROUP BY time |
| | | </select> |
| | | <select id="counsellingOrderTypeTotalData" resultType="java.util.Map"> |
| | | SELECT type,IFNULL(SUM(number),0) number FROM |
| | | ( |
| | | SELECT CASE WHEN tco.order_type =1 THEN '首次面诊' ELSE '咨询疗程' END type, |
| | | COUNT(tco.id) number FROM t_counselling_order tco |
| | | INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id |
| | | WHERE |
| | | tco.status_flag IN (1,2) |
| | | <if test="userId != null"> |
| | | AND (tci.user_id = #{userId} OR tco.companion_user_id = #{userId} OR tco.consultant_user_id = #{userId} ) |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND tco.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND tco.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | GROUP BY tco.order_type |
| | | ) total |
| | | GROUP BY type |
| | | |
| | | </select> |
| | | <select id="counsellingTypeTotalData" resultType="java.util.Map"> |
| | | SELECT CASE WHEN tci.counselling_type =1 THEN '首席咨询师' ELSE '明星咨询师' END type, |
| | | COUNT(DISTINCT tco.counselling_info_id) number FROM t_counselling_order tco |
| | | INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id |
| | | WHERE |
| | | tco.status_flag IN (1,2) |
| | | <if test="userId != null"> |
| | | AND (tci.user_id = #{userId} OR tco.companion_user_id = #{userId} OR tco.consultant_user_id = #{userId} ) |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND tco.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND tco.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | GROUP BY tci.counselling_type |
| | | |
| | | </select> |
| | | <select id="counsellingBuyTotal" resultType="java.lang.Long"> |
| | | SELECT count(DISTINCT tci.user_id) number FROM t_counselling_order tco |
| | | INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id |
| | | WHERE |
| | | tco.status_flag IN (1,2) |
| | | <if test="userId != null"> |
| | | AND (tci.user_id = #{userId} OR tco.companion_user_id = #{userId} OR tco.consultant_user_id = #{userId} ) |
| | | </if> |
| | | |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND tco.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND tco.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | </select> |
| | | <select id="courseBuyTotal" resultType="java.lang.Long"> |
| | | SELECT count(DISTINCT tco.user_id) number FROM t_course_order tco |
| | | WHERE |
| | | tco.status_flag IN (1,2) |
| | | <if test="userId != null"> |
| | | AND ( tco.course_user_id = #{userId} OR tco.tutoring_user_id = #{userId} ) |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND tco.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND tco.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | |
| | | </select> |
| | | <select id="courseNameTotalData" resultType="java.util.Map"> |
| | | SELECT tc.course_name courseName,COUNT(tco.id) number FROM t_course_order tco |
| | | INNER JOIN t_course tc ON tc.id = tco.course_id |
| | | WHERE |
| | | tco.status_flag IN (1,2) |
| | | <if test="userId != null"> |
| | | AND ( tco.course_user_id = #{userId} OR tco.tutoring_user_id = #{userId} ) |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND tco.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND tco.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | GROUP BY tc.course_name |
| | | </select> |
| | | <select id="courseTagTotalData" resultType="java.util.Map"> |
| | | SELECT tct.tag_name tagName,COUNT(tco.id) number FROM t_course_order tco |
| | | INNER JOIN t_course tc ON tc.id = tco.course_id |
| | | INNER JOIN t_course_tag tct ON FIND_IN_SET(tct.id,tc.course_tag_ids) |
| | | WHERE |
| | | tco.status_flag IN (1,2) |
| | | <if test="userId != null"> |
| | | AND ( tco.course_user_id = #{userId} OR tco.tutoring_user_id = #{userId} ) |
| | | </if> |
| | | <if test="beginTime != null and beginTime != ''"> |
| | | AND tco.create_time <![CDATA[ >= ]]> #{beginTime} |
| | | </if> |
| | | <if test="endTime != null and endTime != ''"> |
| | | AND tco.create_time <![CDATA[ <= ]]> #{endTime} |
| | | </if> |
| | | GROUP BY tct.id |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?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="cn.stylefeng.guns.modular.business.mapper.UserEvaluateMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.UserEvaluate"> |
| | | <id column="id" property="id" /> |
| | | <result column="user_id" property="userId" /> |
| | | <result column="buiness_type" property="buinessType" /> |
| | | <result column="buiness_id" property="buinessId" /> |
| | | <result column="score" property="score" /> |
| | | <result column="content" property="content" /> |
| | | <result column="create_user" property="createUser" /> |
| | | <result column="is_delete" property="isDelete" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_user" property="updateUser" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, user_id, buiness_type, buiness_id, score, content, create_user, is_delete, create_time, update_user, update_time |
| | | </sql> |
| | | |
| | | </mapper> |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | |
| | | public interface ExcelService { |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Area; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 地区码表 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2023-12-27 |
| | | */ |
| | | public interface IAreaService extends IService<Area> { |
| | | |
| | | String getNameByCode(String code); |
| | | |
| | | String getNameByCodeAddPrefix(String prefix, String code); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Banner; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * banner 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IBannerService extends IService<Banner> { |
| | | |
| | | Banner wrapperBannerByJumpModule(Banner banner); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ContractRecord; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 合同签订记录 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IContractRecordService extends IService<ContractRecord> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingInfo; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询师信息 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ICounsellingInfoService extends IService<CounsellingInfo> { |
| | | |
| | | |
| | | /** |
| | | * 查询标签是否被引用 |
| | | * @param tagIds 标签ids |
| | | * @return |
| | | */ |
| | | long getCountCounsellingInfo(List<String> tagIds); |
| | | |
| | | /** |
| | | * 添加或者修改咨询师信息 |
| | | * @param counsellingInfo |
| | | */ |
| | | void saveOrUpdateCounsellingInfo(CounsellingInfo counsellingInfo); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.CounsellingOrderReservationRequestDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.UserCounsellingTotalDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.UserCounsellingOrderReservationRequestDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询订单预约记录 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICounsellingOrderReservationService extends IService<CounsellingOrderReservation> { |
| | | |
| | | |
| | | /** |
| | | * 分页查询预约记录 |
| | | * @param page 分页对象 |
| | | * @param counsellingOrderReservationRequestDTO 查询条件 |
| | | * @return |
| | | */ |
| | | Page<CounsellingOrderReservation> findPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO); |
| | | |
| | | /** |
| | | * 分页查询预约记录 |
| | | * @param page 分页对象 |
| | | * @param counsellingOrderReservationRequestDTO 查询条件 |
| | | * @return |
| | | */ |
| | | Page<CounsellingOrderReservation> findReservationPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO); |
| | | |
| | | |
| | | |
| | | /** |
| | | * 工作人员分页查询预约记录 |
| | | * @param page 分页对象 |
| | | * @param counsellingOrderReservationRequestDTO 查询条件 |
| | | * @return |
| | | */ |
| | | Page<CounsellingOrderReservation> findWorkPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO); |
| | | |
| | | |
| | | /** |
| | | * 根据用户id查询预约记录 |
| | | * @param page |
| | | * @param userCounsellingOrderReservationRequestDTO |
| | | * @return |
| | | */ |
| | | Page<CounsellingOrderReservation> findOrderReservationByUserIdPage(Page page, UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO); |
| | | |
| | | |
| | | /** |
| | | * 统计课时 |
| | | * @param userCounsellingOrderReservationRequestDTO |
| | | * @return |
| | | */ |
| | | UserCounsellingTotalDTO getCounsellingNumTotalByUserId(UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO); |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CreateCounsellingOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingOrder; |
| | | import cn.stylefeng.guns.modular.business.entity.CourseOrder; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询订单信息 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICounsellingOrderService extends IService<CounsellingOrder> { |
| | | |
| | | |
| | | /** |
| | | * 分页查询咨询订单 |
| | | * @param page |
| | | * @param counsellingOrderRequest 咨询订单请求 |
| | | * @return |
| | | */ |
| | | Page<CounsellingOrderResponseDTO> findCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest); |
| | | |
| | | |
| | | /** |
| | | * 工作人员端分页查询咨询订单 |
| | | * @param page |
| | | * @param counsellingOrderRequest 咨询订单请求 |
| | | * @return |
| | | */ |
| | | Page<CounsellingOrderResponseDTO> findWorkCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest); |
| | | |
| | | /** |
| | | * 创建咨询订单 |
| | | * @param counsellingOrderRequest |
| | | */ |
| | | CounsellingOrder createCounsellingOrder(CreateCounsellingOrderRequest counsellingOrderRequest); |
| | | |
| | | |
| | | void payCounsellingOrder(OrderPayRequest orderPayRequest); |
| | | |
| | | /** |
| | | * 根据订单号查询咨询订单信息 |
| | | * @param orderNo |
| | | * @return |
| | | */ |
| | | CounsellingOrder getCounsellingOrderByNo(String orderNo); |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingReservationRecord; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询记录信息 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICounsellingReservationRecordService extends IService<CounsellingReservationRecord> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingReservationWork; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询作业 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICounsellingReservationWorkService extends IService<CounsellingReservationWork> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询套餐信息 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ICounsellingSetMealService extends IService<CounsellingSetMeal> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingSpecialTimeConfig; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询预约特殊时间配置 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICounsellingSpecialTimeConfigService extends IService<CounsellingSpecialTimeConfig> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingTag; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询擅长领域标签表 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ICounsellingTagService extends IService<CounsellingTag> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询预约时间配置 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICounsellingTimeConfigService extends IService<CounsellingTimeConfig> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CounsellingUserRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingUser; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户咨询师课时信息 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-02-29 |
| | | */ |
| | | public interface ICounsellingUserService extends IService<CounsellingUser> { |
| | | |
| | | /** |
| | | * 分页查询咨询用户信息 |
| | | * @param page |
| | | * @param counsellingUserRequest 咨询用户信息请求 |
| | | * @return |
| | | */ |
| | | Page<CounsellingUser> findCounsellingUserPage(Page<CounsellingUser> page, CounsellingUserRequest counsellingUserRequest); |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseChapter; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 章节管理 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ICourseChapterService extends IService<CourseChapter> { |
| | | |
| | | |
| | | /** |
| | | * 根据课程id获取章节层次信息 |
| | | * @param courseId 课程id |
| | | * @return |
| | | */ |
| | | List<CourseChapter> getAllByCourseId(Long courseId); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.CourseOrderResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.CourseResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CourseOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CoursePlaceOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CourseOrder; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程订单信息 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICourseOrderService extends IService<CourseOrder> { |
| | | |
| | | /** |
| | | * 分页查询课程订单 |
| | | * @param page |
| | | * @param courseOrderRequest 课程订单请求 |
| | | * @return |
| | | */ |
| | | Page<CourseOrderResponseDTO> findCounseOrderPage(Page<CourseOrderResponseDTO> page, CourseOrderRequest courseOrderRequest); |
| | | |
| | | /** |
| | | * 根据订单查询订单信息 |
| | | * @param orderId 订单id |
| | | * @return |
| | | */ |
| | | CourseOrderResponseDTO getCourseChapterInfoByOrderId(Long orderId); |
| | | |
| | | /** |
| | | * |
| | | * 创建课程订单 |
| | | * @param coursePlaceOrderRequest 创建课程订单 |
| | | * @return |
| | | */ |
| | | CourseOrder createCourseOrder(CoursePlaceOrderRequest coursePlaceOrderRequest); |
| | | |
| | | /** |
| | | * 支付课程订单 |
| | | * @param orderPayRequest |
| | | */ |
| | | void payCourseOrder(OrderPayRequest orderPayRequest); |
| | | |
| | | /** |
| | | * 根据订单编号查询 |
| | | * @param orderNo |
| | | * @return |
| | | */ |
| | | CourseOrder getCourseOrderByNo(String orderNo); |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Course; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程管理 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ICourseService extends IService<Course> { |
| | | |
| | | /** |
| | | * 查询标签是否被引用 |
| | | * @param tagIds 标签ids |
| | | * @return |
| | | */ |
| | | long getCountCourse(List<String> tagIds); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseStudyNote; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程学习笔记 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICourseStudyNoteService extends IService<CourseStudyNote> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseTag; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程标签 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ICourseTagService extends IService<CourseTag> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseUserLearned; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程学习记录 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICourseUserLearnedService extends IService<CourseUserLearned> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程章节学习进度 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ICouserChapterLearningRateService extends IService<CouserChapterLearningRate> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Help; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 帮助 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IHelpService extends IService<Help> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.ImGroupUserDto; |
| | | import cn.stylefeng.guns.modular.business.entity.ImGroup; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息群信息 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IImGroupService extends IService<ImGroup> { |
| | | |
| | | |
| | | |
| | | /** |
| | | * 创建群聊 |
| | | * @param groupType 群类型:1课程,2咨询 |
| | | * @param consultantUserId |
| | | * @param companionUserId |
| | | * @param counsellingUserId |
| | | * @param courseUserId |
| | | * @param tutoringUserId |
| | | */ |
| | | void createGroup(Integer groupType, Long consultantUserId,Long companionUserId, |
| | | Long counsellingUserId,Long courseUserId,Long tutoringUserId,Long userId,Long orderId); |
| | | |
| | | /** |
| | | * 获取我的群聊 |
| | | * @param userId |
| | | * @return |
| | | */ |
| | | List<ImGroup> getMyGroup(Long userId, String groupName, Integer statusFlag, String nickName, Integer groupType, String orderId); |
| | | |
| | | /** |
| | | * 获取群聊用户 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | | List<ImGroupUserDto> groupUser(Long groupId); |
| | | |
| | | /** |
| | | * 修改咨询和幸福顾问 |
| | | * @param userId 咨询和幸福顾问id |
| | | * @param groupType 分群类型 |
| | | * @param customerId 客户id |
| | | */ |
| | | void updateGroupUserForOrderinfo(Long userId,Integer groupType,Long customerId); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImGroupUser; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息群用户 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IImGroupUserService extends IService<ImGroupUser> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImNotice; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息通知 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IImNoticeService extends IService<ImNotice> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImUserStatus; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * IM用户在线状态 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-11 |
| | | */ |
| | | public interface IImUserStatusService extends IService<ImUserStatus> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisSpecialTimeConfigEdit2Request; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisSpecialTimeConfig; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析特殊时间配置 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-26 |
| | | */ |
| | | public interface IMentalAnalysisSpecialTimeConfigService extends IService<MentalAnalysisSpecialTimeConfig> { |
| | | |
| | | /** |
| | | * 特殊时段修改 |
| | | * @param req |
| | | * @return |
| | | */ |
| | | ResponseData editSpecialTimeConfig(MentalAnalysisSpecialTimeConfigEdit2Request req); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalAnalysisTimeConfigPageDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisTimeConfigAddUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig; |
| | | import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析时间配置 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-26 |
| | | */ |
| | | public interface IMentalAnalysisTimeConfigService extends IService<MentalAnalysisTimeConfig> { |
| | | |
| | | Page<MentalAnalysisTimeConfigPageDTO> getWorkerPage(Page<Object> page, String nickName); |
| | | |
| | | void addTimeConfig(MentalAnalysisTimeConfigAddUpdateRequest req); |
| | | |
| | | void editTimeConfig(MentalAnalysisTimeConfigAddUpdateRequest req); |
| | | |
| | | List<MentalAnalysisTimeConfig> getWorkerListByAppointmentTime(Integer mentalAnalysisStatus, Integer weekDay, String appointmentDay, String beginTimePoint, String endTimePoint); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisTimeAddUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTime; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析可预约时间 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-27 |
| | | */ |
| | | public interface IMentalAnalysisTimeService extends IService<MentalAnalysisTime> { |
| | | |
| | | void updateTime(MentalAnalysisTimeAddUpdateRequest req); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalAppointmentPageDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyMentalAppointmentDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.UserMentalAppointmentPageResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAppointment; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析预约 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IMentalAppointmentService extends IService<MentalAppointment> { |
| | | |
| | | List<MentalTestMyMentalAppointmentDTO> myMentalAppointment(Long userId, String consultantName, List<Integer> statusFlagList); |
| | | |
| | | |
| | | /** |
| | | * 性格分析1v1咨询预约 |
| | | * @param page |
| | | * @param userId |
| | | * @param name |
| | | * @param telephone |
| | | * @param statusFlag |
| | | * @return |
| | | */ |
| | | Page<UserMentalAppointmentPageResponseDTO> userMentalAppointmentPage(Page<Object> page, Long userId, String name, String telephone, Integer statusFlag); |
| | | |
| | | Page<MentalAppointmentPageDTO> getPage(Page<Object> page, Long counsellingInfoId, String workerNickName, String userNickName, String userTelephone, Integer statusFlag, List<Integer> statusFlagList); |
| | | |
| | | List<MentalAppointmentPageDTO> mentalAnalysisTimeConfigSchedule(String searchBeginTime, String searchEndTime, Long counsellingInfoId, String workerNickName, String userNickName, String userTelephone, Integer statusFlag, List<Integer> statusFlagList); |
| | | |
| | | /** |
| | | * 1V1咨询预约取消 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | boolean mentalAppointmentCancel(Long id); |
| | | |
| | | /** |
| | | * 预约时间匹配性格分析师 |
| | | * @param appointmentDay |
| | | * @param beginTimePoint |
| | | * @param endTimePoint |
| | | * @return |
| | | */ |
| | | Long assignMentalAppointmentWorkerId(Date appointmentDay, String beginTimePoint, String endTimePoint); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestClass; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试分类 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IMentalTestClassService extends IService<MentalTestClass> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestOption; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试选项 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IMentalTestOptionService extends IService<MentalTestOption> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试问题 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IMentalTestQuestionService extends IService<MentalTestQuestion> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestOrderDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestRecordPageDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestRecord; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试记录 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-09 |
| | | */ |
| | | public interface IMentalTestRecordService extends IService<MentalTestRecord> { |
| | | |
| | | /** |
| | | * 我的测试 |
| | | * @param userId |
| | | * @return |
| | | */ |
| | | List<MentalTestMyTestTopicDTO> myTestTopic(Long userId, Long topicId); |
| | | |
| | | /** |
| | | * 我的测试(含题库信息) |
| | | * @param mentalAppointmentId |
| | | * @param mentalAppointmentIdList |
| | | * @return |
| | | */ |
| | | List<MentalTestMyTestTopicDTO> myTestRecordTopicByMentalAppointmentId(Long mentalAppointmentId, List<Long> mentalAppointmentIdList); |
| | | |
| | | /** |
| | | * 我的测试(订单) |
| | | * @param userId |
| | | * @param topicId |
| | | * @return |
| | | */ |
| | | List<MentalTestMyTestOrderDTO> myTestOrder(Long userId, Long topicId); |
| | | |
| | | /** |
| | | * 从测试记录中获取1v1咨询师 |
| | | * @param mentalTestRecordId |
| | | * @param userId |
| | | * @return |
| | | */ |
| | | Long getConsultWorkerIdByRecord(Long mentalTestRecordId, Long userId); |
| | | |
| | | Page<MentalTestRecordPageDTO> getPage(Page<Object> page, String title, String nickName, String telephone, Integer testType); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestResult; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试结果 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-09 |
| | | */ |
| | | public interface IMentalTestResultService extends IService<MentalTestResult> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试结果配置 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IMentalTestResultSetService extends IService<MentalTestResultSet> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestQuestionOptionDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestTopicPageDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.MentalTestTopicAddUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试题库 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IMentalTestTopicService extends IService<MentalTestTopic> { |
| | | |
| | | /** |
| | | * 题库分页 |
| | | * |
| | | * @param page |
| | | * @param classIds |
| | | * @param title |
| | | * @param testType |
| | | * @param testFlag |
| | | * @param userId |
| | | * @param statusFlag |
| | | * @return |
| | | */ |
| | | Page<MentalTestTopicPageDTO> topicPage(Page page, String classIds, String title, Integer testType, Integer testFlag, Long userId, Integer statusFlag); |
| | | |
| | | void saveTopic(MentalTestTopicAddUpdateRequest req); |
| | | |
| | | void editTopic(MentalTestTopicAddUpdateRequest req); |
| | | |
| | | /** |
| | | * 获取心理测试问题、选项 |
| | | * @param topicId |
| | | * @return |
| | | */ |
| | | List<MentalTestQuestionOptionDTO> getQuestionOptionByTopicId(Long topicId); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.OrderConsultOne; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理咨询1V1订单 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IOrderConsultOneService extends IService<OrderConsultOne> { |
| | | |
| | | /** |
| | | * 根据订单号查询订单 |
| | | * |
| | | * @param orderNo |
| | | * @return |
| | | */ |
| | | OrderConsultOne getOrderByNo(String orderNo); |
| | | |
| | | /** |
| | | * 统计订单数据 |
| | | */ |
| | | List<Map<String, Object>> getStatOrderList(String dateFormat, String beginTime, String endTime, Long workerId, List<Integer> statusList); |
| | | |
| | | /** |
| | | * 是否支付1v1咨询订单 |
| | | * @return |
| | | */ |
| | | boolean getIsPayOrderConsultOne(Long orderConsultOneId, String mentalTestOrderNo); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.OrderMentalTestDetailDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.OrderMentalTestPageDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.OrderMentalTest; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试订单 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IOrderMentalTestService extends IService<OrderMentalTest> { |
| | | |
| | | /** |
| | | * 根据订单号获取订单 |
| | | * |
| | | * @param orderNo |
| | | * @return |
| | | */ |
| | | OrderMentalTest getOrderByNo(String orderNo); |
| | | |
| | | /** |
| | | * 支付成功 |
| | | * |
| | | * @param orderNo |
| | | * @param tradeNo |
| | | * @param totalAmount |
| | | * @param payType |
| | | * @return |
| | | */ |
| | | Boolean paySuccess(String orderNo, String tradeNo, String totalAmount, Integer payType); |
| | | |
| | | /** |
| | | * 获取心理测试订单列表 |
| | | * @param page |
| | | * @param title |
| | | * @param nickName |
| | | * @param telephone |
| | | * @param testType 测试类型:0免费,1付费 |
| | | * @param statusFlag 订单状态 |
| | | * @param adminView 后台显示1(免费必须是提交测试的) |
| | | * @return |
| | | */ |
| | | Page<OrderMentalTestPageDTO> getPage(Page<Object> page, String title, String nickName, String telephone, Integer testType, Integer statusFlag, Integer adminView); |
| | | OrderMentalTestDetailDTO getInfoById(Long Id); |
| | | |
| | | /** |
| | | * 创建心理测试订单 |
| | | * @param userId 用户ID |
| | | * @param topicId 题库ID |
| | | * @param isNeedPay 是否需要支付,false无须支付直接创建,true需要支付 |
| | | * @param isBack 是否后台创建 |
| | | * @return |
| | | */ |
| | | OrderMentalTest createOrderMentalTest(Long userId, Long topicId, Boolean isNeedPay, Boolean isBack); |
| | | |
| | | /** |
| | | * 统计订单数据 |
| | | */ |
| | | List<Map<String, Object>> getStatOrderList(String dateFormat, String beginTime, String endTime, Long workerId, List<Integer> statusList); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.PsychologicalColumn; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理专栏管理 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IPsychologicalColumnService extends IService<PsychologicalColumn> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.PsychologicalRead; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理专栏阅读记录 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IPsychologicalReadService extends IService<PsychologicalRead> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.StoreAppointment; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 门店预约 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface IStoreAppointmentService extends IService<StoreAppointment> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdByIdRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdRequest; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; |
| | | import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户评价表 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface ISysUserBusinessService extends IService<SysUser> { |
| | | |
| | | ResponseData resetPwd(SysUserResetPwdRequest req); |
| | | ResponseData resetPwdById(SysUserResetPwdByIdRequest req); |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.SystemSet; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统配置(H5、客服电话) 服务类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | public interface ISystemSetService extends IService<SystemSet> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.request.TotalRequest; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 数据统计 |
| | | */ |
| | | public interface ITotalReportService { |
| | | |
| | | /** |
| | | * 课程统计 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> courseTotalData( TotalRequest totalRequest); |
| | | |
| | | /** |
| | | * 心理测试统计 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> mentalTestTotalData( TotalRequest totalRequest); |
| | | |
| | | /** |
| | | * 心理测试1v1咨询统计 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> orderConsultOneTotalData(TotalRequest totalRequest); |
| | | |
| | | |
| | | /** |
| | | * 咨询统计 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> counsellingTotalData( TotalRequest totalRequest); |
| | | |
| | | |
| | | /** |
| | | * 课程名称统计 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> courseNameTotalData(TotalRequest totalRequest); |
| | | |
| | | /** |
| | | * 课程标签统计 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> courseTagTotalData(TotalRequest totalRequest); |
| | | |
| | | /** |
| | | * 课程购买人数 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | long courseBuyTotal(TotalRequest totalRequest); |
| | | |
| | | /** |
| | | * 咨询订单类型 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> counsellingOrderTypeTotalData( TotalRequest totalRequest); |
| | | |
| | | /** |
| | | * 咨询师类型 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | List<Map<String,Object>> counsellingTypeTotalData( TotalRequest totalRequest); |
| | | |
| | | /** |
| | | * 咨询已购买人数 |
| | | * @param totalRequest |
| | | * @return |
| | | */ |
| | | long counsellingBuyTotal(TotalRequest totalRequest); |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.UserEvaluate; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户评价表 服务类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | public interface IUserEvaluateService extends IService<UserEvaluate> { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.guns.modular.business.entity.Area; |
| | | import cn.stylefeng.guns.modular.business.mapper.AreaMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IAreaService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 地区码表 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2023-12-27 |
| | | */ |
| | | @Service |
| | | public class AreaServiceImpl extends ServiceImpl<AreaMapper, Area> implements IAreaService { |
| | | |
| | | @Override |
| | | public String getNameByCode(String code) { |
| | | return getNameByCodeAddPrefix(null, code); |
| | | } |
| | | |
| | | @Override |
| | | public String getNameByCodeAddPrefix(String prefix, String code) { |
| | | String a1 = "", a2 = "", a3 = "", a4 = ""; |
| | | if (StrUtil.isBlank(prefix)) { |
| | | prefix = ""; |
| | | } |
| | | |
| | | Area area = this.baseMapper.selectById(code); |
| | | // 4级地址 |
| | | if (area != null && area.getLevel() == 4) { |
| | | a4 = prefix + area.getName(); |
| | | |
| | | Area area3 = this.baseMapper.selectById(area.getPid()); |
| | | a3 = prefix + area3.getName(); |
| | | |
| | | Area area2 = this.baseMapper.selectById(area3.getPid()); |
| | | a2 = prefix + area2.getName(); |
| | | |
| | | Area area1 = this.baseMapper.selectById(area2.getPid()); |
| | | a1 = prefix + area1.getName(); |
| | | } |
| | | // 3级地址 |
| | | if (area != null && area.getLevel() == 3) { |
| | | a3 = prefix + area.getName(); |
| | | |
| | | Area area2 = this.baseMapper.selectById(area.getPid()); |
| | | a2 = prefix + area2.getName(); |
| | | |
| | | Area area1 = this.baseMapper.selectById(area2.getPid()); |
| | | a1 = prefix + area1.getName(); |
| | | } |
| | | // 2级地址 |
| | | if (area != null && area.getLevel() == 2) { |
| | | a2 = prefix + area.getName(); |
| | | |
| | | Area area1 = this.baseMapper.selectById(area.getPid()); |
| | | a1 = prefix + area1.getName(); |
| | | } |
| | | // 1级地址 |
| | | if (area != null && area.getLevel() == 1) { |
| | | a1 = prefix + area.getName(); |
| | | } |
| | | |
| | | return a1 + a2 + a3 + a4; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Banner; |
| | | import cn.stylefeng.guns.modular.business.mapper.BannerMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IBannerService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * banner 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class BannerServiceImpl extends ServiceImpl<BannerMapper, Banner> implements IBannerService { |
| | | |
| | | public Banner wrapperBannerByJumpModule(Banner banner) { |
| | | if (banner != null && banner.getJumpModule() != null && banner.getJumpModule() == 0) { |
| | | // 跳转模块:0不跳转,1心理测试,2课程,3咨询 |
| | | banner.setJumpPage(null); |
| | | banner.setJumpId(null); |
| | | return banner; |
| | | } else if (banner != null && banner.getJumpPage() != null && banner.getJumpPage() == 1) { |
| | | // 跳转页面,1主页,2详情页 |
| | | banner.setJumpId(null); |
| | | return banner; |
| | | } |
| | | return banner; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ContractRecord; |
| | | import cn.stylefeng.guns.modular.business.mapper.ContractRecordMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IContractRecordService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 合同签订记录 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class ContractRecordServiceImpl extends ServiceImpl<ContractRecordMapper, ContractRecord> implements IContractRecordService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.collection.ListUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingInfo; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingInfoMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingInfoService; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingSetMealService; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingTimeConfigService; |
| | | import cn.stylefeng.guns.utils.GeneralUtil; |
| | | import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import com.google.common.collect.Lists; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询师信息 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class CounsellingInfoServiceImpl extends ServiceImpl<CounsellingInfoMapper, CounsellingInfo> implements ICounsellingInfoService { |
| | | |
| | | |
| | | @Autowired |
| | | private ICounsellingSetMealService counsellingSetMealService; |
| | | |
| | | @Autowired |
| | | private ICounsellingTimeConfigService counsellingTimeConfigService; |
| | | |
| | | @Override |
| | | public long getCountCounsellingInfo(List<String> tagIds) { |
| | | return this.baseMapper.getCountCounsellingInfo(tagIds); |
| | | } |
| | | |
| | | @Override |
| | | public void saveOrUpdateCounsellingInfo(CounsellingInfo counsellingInfo) { |
| | | //判断是否新增 |
| | | if (counsellingInfo.getId() != null){ |
| | | counsellingInfo.setUpdateUser(LoginContext.me().getLoginUser().getUserId()); |
| | | this.updateById(counsellingInfo); |
| | | //处理所有套餐信息为删除状态 |
| | | this.counsellingSetMealService.update(new LambdaUpdateWrapper<CounsellingSetMeal>().set(CounsellingSetMeal::getIsDelete,1) |
| | | .eq(CounsellingSetMeal::getCounsellingInfoId,counsellingInfo.getId())); |
| | | //生成套餐信息 |
| | | if (CollectionUtil.isNotEmpty(counsellingInfo.getCounsellingSetMealList())){ |
| | | counsellingInfo.getCounsellingSetMealList().forEach(counsellingSetMeal -> { |
| | | counsellingSetMeal.setCounsellingInfoId(counsellingInfo.getId()); |
| | | }); |
| | | this.counsellingSetMealService.saveOrUpdateBatch(counsellingInfo.getCounsellingSetMealList()); |
| | | } |
| | | //删除时间配置重新生成 |
| | | this.counsellingTimeConfigService.remove(new LambdaQueryWrapper<CounsellingTimeConfig>().eq(CounsellingTimeConfig::getCounsellingInfoId,counsellingInfo.getId())); |
| | | //处理预约时间配置 |
| | | if (CollectionUtil.isNotEmpty(counsellingInfo.getTimeConfigDTOList()) ){ |
| | | List<CounsellingTimeConfig> counsellingTimeConfigs = new ArrayList<>(); |
| | | counsellingInfo.getTimeConfigDTOList().forEach(timeConfigDTO -> { |
| | | // 模块编号 |
| | | String moduleNo = GeneralUtil.generateModuleNo(); |
| | | //星期几 |
| | | List<String> weekList = ListUtil.toList(timeConfigDTO.getWeeks().split(",")); |
| | | //时间点 |
| | | List<String> timePointList = ListUtil.toList(timeConfigDTO.getTimePoints().split(",")); |
| | | weekList.stream().forEach(week->{ |
| | | timePointList.forEach(timePoint ->{ |
| | | CounsellingTimeConfig counsellingTimeConfig = new CounsellingTimeConfig(); |
| | | counsellingTimeConfig.setModuleNo(moduleNo); |
| | | counsellingTimeConfig.setWeekDay(Integer.parseInt(week)); |
| | | counsellingTimeConfig.setCounsellingInfoId(counsellingInfo.getId()); |
| | | counsellingTimeConfig.setBeginTimePoint(timePoint.split("-")[0]); |
| | | counsellingTimeConfig.setEndTimePoint(timePoint.split("-")[1]); |
| | | counsellingTimeConfigs.add(counsellingTimeConfig); |
| | | }); |
| | | }); |
| | | }); |
| | | |
| | | if (CollectionUtil.isNotEmpty(counsellingTimeConfigs)){ |
| | | this.counsellingTimeConfigService.saveBatch(counsellingTimeConfigs); |
| | | } |
| | | |
| | | } |
| | | }else{ |
| | | counsellingInfo.setListingStatus(1); |
| | | counsellingInfo.setCreateUser(LoginContext.me().getLoginUser().getUserId()); |
| | | this.save(counsellingInfo); |
| | | //生成套餐信息 |
| | | if (CollectionUtil.isNotEmpty(counsellingInfo.getCounsellingSetMealList())){ |
| | | counsellingInfo.getCounsellingSetMealList().forEach(counsellingSetMeal -> { |
| | | counsellingSetMeal.setCounsellingInfoId(counsellingInfo.getId()); |
| | | }); |
| | | this.counsellingSetMealService.saveBatch(counsellingInfo.getCounsellingSetMealList()); |
| | | } |
| | | //生成预约时间配置 |
| | | if (CollectionUtil.isNotEmpty(counsellingInfo.getTimeConfigDTOList())){ |
| | | List<CounsellingTimeConfig> counsellingTimeConfigs = new ArrayList<>(); |
| | | counsellingInfo.getTimeConfigDTOList().forEach(timeConfigDTO -> { |
| | | // 模块编号 |
| | | String moduleNo = GeneralUtil.generateModuleNo(); |
| | | //星期几 |
| | | List<String> weekList = ListUtil.toList(timeConfigDTO.getWeeks().split(",")); |
| | | //时间点 |
| | | List<String> timePointList = ListUtil.toList(timeConfigDTO.getTimePoints().split(",")); |
| | | weekList.stream().forEach(week->{ |
| | | timePointList.forEach(timePoint ->{ |
| | | CounsellingTimeConfig counsellingTimeConfig = new CounsellingTimeConfig(); |
| | | counsellingTimeConfig.setModuleNo(moduleNo); |
| | | counsellingTimeConfig.setWeekDay(Integer.parseInt(week)); |
| | | counsellingTimeConfig.setCounsellingInfoId(counsellingInfo.getId()); |
| | | counsellingTimeConfig.setBeginTimePoint(timePoint.split("-")[0]); |
| | | counsellingTimeConfig.setEndTimePoint(timePoint.split("-")[1]); |
| | | counsellingTimeConfigs.add(counsellingTimeConfig); |
| | | }); |
| | | }); |
| | | |
| | | }); |
| | | |
| | | if (CollectionUtil.isNotEmpty(counsellingTimeConfigs)){ |
| | | this.counsellingTimeConfigService.saveBatch(counsellingTimeConfigs); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.CounsellingOrderReservationRequestDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.UserCounsellingTotalDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.UserCounsellingOrderReservationRequestDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingOrderReservationMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingOrderReservationService; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询订单预约记录 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CounsellingOrderReservationServiceImpl extends ServiceImpl<CounsellingOrderReservationMapper, CounsellingOrderReservation> implements ICounsellingOrderReservationService { |
| | | |
| | | /** |
| | | * 分页查询预约记录 |
| | | * @param page 分页对象 |
| | | * @param counsellingOrderReservationRequestDTO 查询条件 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Page<CounsellingOrderReservation> findPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO) { |
| | | return this.baseMapper.findPage(page,counsellingOrderReservationRequestDTO); |
| | | } |
| | | |
| | | @Override |
| | | public Page<CounsellingOrderReservation> findReservationPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO) { |
| | | return this.baseMapper.findReservationPage(page, counsellingOrderReservationRequestDTO); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 工作人员分页查询预约记录 |
| | | * @param page 分页对象 |
| | | * @param counsellingOrderReservationRequestDTO 查询条件 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Page<CounsellingOrderReservation> findWorkPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO) { |
| | | return this.baseMapper.findWorkPage(page,counsellingOrderReservationRequestDTO); |
| | | } |
| | | |
| | | /** |
| | | * 根据用户id查询预约记录 |
| | | * @param page |
| | | * @param userCounsellingOrderReservationRequestDTO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Page<CounsellingOrderReservation> findOrderReservationByUserIdPage(Page page, UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO) { |
| | | return this.baseMapper.findOrderReservationByUserIdPage(page,userCounsellingOrderReservationRequestDTO); |
| | | } |
| | | |
| | | @Override |
| | | public UserCounsellingTotalDTO getCounsellingNumTotalByUserId(UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO) { |
| | | return this.baseMapper.getCounsellingNumTotalByUserId(userCounsellingOrderReservationRequestDTO); |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CreateCounsellingOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CustomerUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.*; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingOrderMapper; |
| | | import cn.stylefeng.guns.modular.business.service.*; |
| | | import cn.stylefeng.guns.utils.GeneralUtil; |
| | | import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; |
| | | import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; |
| | | import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService; |
| | | import cn.stylefeng.roses.kernel.rule.enums.*; |
| | | import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询订单信息 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CounsellingOrderServiceImpl extends ServiceImpl<CounsellingOrderMapper, CounsellingOrder> implements ICounsellingOrderService { |
| | | |
| | | @Autowired |
| | | private CustomerService customerService; |
| | | |
| | | @Autowired |
| | | private ICounsellingInfoService counsellingInfoService; |
| | | |
| | | @Autowired |
| | | private ICounsellingSetMealService counsellingSetMealService; |
| | | |
| | | @Autowired |
| | | private ICounsellingOrderReservationService counsellingOrderReservationService; |
| | | |
| | | @Autowired |
| | | private IImGroupService iImGroupService; |
| | | |
| | | @Resource |
| | | private ImBizService imBizService; |
| | | |
| | | @Resource |
| | | private ICounsellingUserService counsellingUserService; |
| | | @Resource |
| | | private IAreaService areaService; |
| | | |
| | | |
| | | @Override |
| | | public Page<CounsellingOrderResponseDTO> findCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest) { |
| | | return this.baseMapper.findCounsellingOrderPage(page, counsellingOrderRequest); |
| | | } |
| | | |
| | | @Override |
| | | public Page<CounsellingOrderResponseDTO> findWorkCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest) { |
| | | return this.baseMapper.findWorkCounsellingOrderPage(page, counsellingOrderRequest); |
| | | } |
| | | |
| | | @Override |
| | | public CounsellingOrder createCounsellingOrder(CreateCounsellingOrderRequest counsellingOrderRequest) { |
| | | |
| | | if (counsellingOrderRequest.getUserId() == null){ |
| | | counsellingOrderRequest.setUserId(LoginContext.me().getLoginUser().getUserId()); |
| | | } |
| | | //判断是否有用户咨询师信息 |
| | | CounsellingUser counsellingUserOld = this.counsellingUserService.getOne(new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getCounsellingInfoId,counsellingOrderRequest.getCounsellingInfoId()) |
| | | .eq(CounsellingUser::getUserId,counsellingOrderRequest.getUserId())); |
| | | if(counsellingOrderRequest.getOrderType().intValue() != 1){ |
| | | if (counsellingUserOld == null){ |
| | | throw new ServiceException("请先购买首次咨询!"); |
| | | } else if (counsellingUserOld != null && counsellingUserOld.getIsFirstAppointment() != null && counsellingUserOld.getIsFirstAppointment().intValue() != 3) { |
| | | throw new ServiceException("请先完成首次咨询,再进行疗程购买!"); |
| | | } |
| | | |
| | | } |
| | | //查询客户信息 |
| | | Customer customerOld = this.customerService.getById(counsellingOrderRequest.getUserId()); |
| | | CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrderRequest.getCounsellingInfoId()); |
| | | CounsellingOrder counsellingOrder = BeanUtil.copyProperties(counsellingOrderRequest,CounsellingOrder.class); |
| | | if (counsellingOrderRequest.getCustomerUpdateRequest() != null){ |
| | | counsellingOrder.setPhone(counsellingOrderRequest.getCustomerUpdateRequest().getLinkPhone()); |
| | | } |
| | | counsellingOrder.setOrderNo(GeneralUtil.generateOrderNo(OrderTypeEnum.COUNSELLING_ORDER)); |
| | | //订单类型 1-首次咨询,2-咨询疗程,3-课程续费 |
| | | if (counsellingOrderRequest.getOrderType().intValue() ==1){ |
| | | //是否后台创建 |
| | | if (counsellingOrderRequest.getIsBack()){ |
| | | Customer customerUser = this.customerService.getById(counsellingOrderRequest.getUserId()); |
| | | if (customerUser != null){ |
| | | CustomerUpdateRequest customerUpdateRequest = BeanUtil.copyProperties(customerUser, CustomerUpdateRequest.class); |
| | | counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest)); |
| | | } |
| | | |
| | | counsellingOrder.setStatusFlag(1); |
| | | // if (counsellingUserOld != null && counsellingUserOld.getCompanionUserId() != null){ |
| | | // //陪护教练id |
| | | // counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId()); |
| | | // }else { |
| | | // |
| | | // Customer customerCompanion = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | // if (customerCompanion != null){ |
| | | // //陪护教练id |
| | | // counsellingOrder.setCompanionUserId(customerCompanion.getCustomerId()); |
| | | //// counsellingUserOld.setCompanionUserId(customerCompanion.getCustomerId()); |
| | | // }else{ |
| | | // Customer customerCompanion2 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | // if (customerCompanion2 != null){ |
| | | // //陪护教练id |
| | | // counsellingOrder.setCompanionUserId(customerCompanion2.getCustomerId()); |
| | | //// counsellingUserOld.setCompanionUserId(customerCompanion2.getCustomerId()); |
| | | // }else{ |
| | | // throw new ServiceException("没有在线的陪护教练!"); |
| | | // } |
| | | // |
| | | // } |
| | | // } |
| | | |
| | | |
| | | // counsellingOrder.setPhone(customerUser.getLinkPhone()); |
| | | counsellingOrder.setOrderAmount(counsellingInfo.getFristPrice()); |
| | | counsellingOrder.setPayAmount(counsellingInfo.getFristPrice()); |
| | | counsellingOrder.setCreateUser(LoginContext.me().getLoginUser().getUserId()); |
| | | |
| | | |
| | | }else{ |
| | | counsellingOrder.setStatusFlag(0); |
| | | CustomerUpdateRequest customerUpdateRequest = counsellingOrderRequest.getCustomerUpdateRequest(); |
| | | if (customerUpdateRequest != null){ |
| | | customerUpdateRequest.setCustomerId(counsellingOrderRequest.getUserId()); |
| | | Customer customer = BeanUtil.toBean(customerUpdateRequest, Customer.class); |
| | | customer.setCustomerId(counsellingOrderRequest.getUserId()); |
| | | // 修改用户信息 |
| | | Boolean update = customerService.updateCustomerRemoveCache(customer); |
| | | counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest)); |
| | | } |
| | | |
| | | } |
| | | if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else{ |
| | | if (customerOld.getConsultWorkerId() != null){ |
| | | counsellingOrder.setConsultantUserId(customerOld.getConsultWorkerId()); |
| | | }else{ |
| | | Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer2 != null){ |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer2.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer2.getCustomerId()); |
| | | }else { |
| | | Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer3 != null){ |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer3.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer3.getCustomerId()); |
| | | }else{ |
| | | throw new ServiceException("没有在线的咨询顾问!"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | }else if (counsellingOrderRequest.getOrderType().intValue() ==2){ |
| | | //获取下单人个人信息 |
| | | Customer customerUser = this.customerService.getById(counsellingOrderRequest.getUserId()); |
| | | if (customerUser != null){ |
| | | CustomerUpdateRequest customerUpdateRequest = BeanUtil.copyProperties(customerUser, CustomerUpdateRequest.class); |
| | | if (StrUtil.isNotBlank(customerUser.getCityCode())) { |
| | | customerUpdateRequest.setCityCodeStr(areaService.getNameByCodeAddPrefix("/", customerUpdateRequest.getCityCode())); |
| | | } |
| | | counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest)); |
| | | } |
| | | //跟进套餐设置订单信息 |
| | | CounsellingSetMeal counsellingSetMeal = this.counsellingSetMealService.getById(counsellingOrderRequest.getCounsellingSetMealId()); |
| | | if (counsellingSetMeal != null){ |
| | | counsellingOrder.setCounsellingSetMealId(counsellingSetMeal.getId()); |
| | | counsellingOrder.setSetMealJson(JSONUtil.toJsonStr(counsellingSetMeal)); |
| | | counsellingOrder.setPayAmount(counsellingSetMeal.getPrice()); |
| | | counsellingOrder.setOrderAmount(counsellingSetMeal.getOriginalPrice()); |
| | | counsellingOrder.setClassHours(counsellingSetMeal.getClassHours()); |
| | | counsellingOrder.setResidueClassHours(counsellingSetMeal.getClassHours()); |
| | | |
| | | }else { |
| | | throw new ServiceException("咨询套餐不存在!"); |
| | | } |
| | | counsellingOrder.setPhone(customerUser.getTelephone()); |
| | | if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else{ |
| | | if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else { |
| | | if (customerOld.getConsultWorkerId() != null) { |
| | | counsellingOrder.setConsultantUserId(customerOld.getConsultWorkerId()); |
| | | } else { |
| | | Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer2 != null) { |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer2.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer2.getCustomerId()); |
| | | } else { |
| | | Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer3 != null) { |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer3.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer3.getCustomerId()); |
| | | } else { |
| | | throw new ServiceException("没有在线的咨询顾问!"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //是否赠送陪护 |
| | | if (counsellingSetMeal.getIsGive() != null && counsellingSetMeal.getIsGive().intValue() == 1){ |
| | | if (counsellingUserOld != null && counsellingUserOld.getCompanionUserId() != null){ |
| | | //陪护教练id |
| | | counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId()); |
| | | }else { |
| | | |
| | | Customer customerCompanion = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customerCompanion != null){ |
| | | //陪护教练id |
| | | counsellingOrder.setCompanionUserId(customerCompanion.getCustomerId()); |
| | | counsellingUserOld.setCompanionUserId(customerCompanion.getCustomerId()); |
| | | }else{ |
| | | Customer customerCompanion2 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customerCompanion2 != null){ |
| | | //陪护教练id |
| | | counsellingOrder.setCompanionUserId(customerCompanion2.getCustomerId()); |
| | | counsellingUserOld.setCompanionUserId(customerCompanion2.getCustomerId()); |
| | | }else{ |
| | | throw new ServiceException("没有在线的陪护教练!"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | //是否后台创建 |
| | | if (counsellingOrderRequest.getIsBack()){ |
| | | |
| | | counsellingOrder.setStatusFlag(1); |
| | | counsellingOrder.setEffectiveBeginTime(new Date()); |
| | | counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay()))); |
| | | counsellingOrder.setCreateUser(LoginContext.me().getLoginUser().getUserId()); |
| | | //查询是否已经存在群聊 |
| | | //查询是否已经存在群聊 |
| | | // long imCount = this.iImGroupService.count(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId()) |
| | | // .eq(ImGroup::getGroupType,2).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()).eq(ImGroup::getIsDelete,0)); |
| | | // if ( imCount ==0l ){ |
| | | if (counsellingSetMeal.getIsGive() != null && counsellingSetMeal.getIsGive().intValue() == 1){ |
| | | //生成群聊 |
| | | iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId()); |
| | | |
| | | }else{ |
| | | //生成群聊 |
| | | iImGroupService.createGroup(2,null,null,counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId()); |
| | | |
| | | } |
| | | |
| | | // } |
| | | |
| | | }else { |
| | | counsellingOrder.setStatusFlag(0); |
| | | |
| | | } |
| | | } else if (counsellingOrderRequest.getOrderType().intValue() ==3) { |
| | | //获取下单人个人信息 |
| | | Customer customerUser = this.customerService.getById(counsellingOrderRequest.getUserId()); |
| | | if (customerUser != null){ |
| | | CustomerUpdateRequest customerUpdateRequest = BeanUtil.copyProperties(customerUser, CustomerUpdateRequest.class); |
| | | if (StrUtil.isNotBlank(customerUser.getCityCode())) { |
| | | customerUpdateRequest.setCityCodeStr(areaService.getNameByCodeAddPrefix("/", customerUpdateRequest.getCityCode())); |
| | | } |
| | | counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest)); |
| | | } |
| | | //跟进套餐设置订单信息 |
| | | CounsellingSetMeal counsellingSetMeal = this.counsellingSetMealService.getById(counsellingOrderRequest.getCounsellingSetMealId()); |
| | | if (counsellingSetMeal != null){ |
| | | counsellingOrder.setCounsellingSetMealId(counsellingSetMeal.getId()); |
| | | counsellingOrder.setSetMealJson(JSONUtil.toJsonStr(counsellingSetMeal)); |
| | | counsellingOrder.setPayAmount(counsellingSetMeal.getPrice()); |
| | | counsellingOrder.setOrderAmount(counsellingSetMeal.getOriginalPrice()); |
| | | |
| | | counsellingOrder.setClassHours(counsellingSetMeal.getClassHours()); |
| | | counsellingOrder.setResidueClassHours(counsellingSetMeal.getClassHours()); |
| | | // counsellingOrder.setEffectiveBeginTime(new Date()); |
| | | // counsellingOrder.setEffectiveEndTime(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay())); |
| | | |
| | | }else { |
| | | throw new ServiceException("咨询套餐不存在!"); |
| | | } |
| | | counsellingOrder.setPhone(customerUser.getTelephone()); |
| | | if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else{ |
| | | if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else { |
| | | if (customerOld.getConsultWorkerId() != null) { |
| | | counsellingOrder.setConsultantUserId(customerOld.getConsultWorkerId()); |
| | | } else { |
| | | Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer2 != null) { |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer2.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer2.getCustomerId()); |
| | | } else { |
| | | Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer3 != null) { |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer3.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer3.getCustomerId()); |
| | | } else { |
| | | throw new ServiceException("没有在线的咨询顾问!"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //是否后台创建 |
| | | if (counsellingOrderRequest.getIsBack()){ |
| | | Date nowDate = new Date(); |
| | | if (counsellingUserOld == null || (counsellingUserOld != null && (counsellingUserOld.getEffectiveEndTime() == null || |
| | | (counsellingUserOld.getEffectiveEndTime() != null && counsellingUserOld.getEffectiveEndTime().getTime() < nowDate.getTime())))){ |
| | | counsellingOrder.setEffectiveBeginTime(nowDate); |
| | | counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay()))); |
| | | }else{ |
| | | counsellingOrder.setEffectiveBeginTime(counsellingUserOld.getEffectiveEndTime()); |
| | | counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay()))); |
| | | |
| | | } |
| | | counsellingOrder.setStatusFlag(1); |
| | | |
| | | counsellingOrder.setCreateUser(LoginContext.me().getLoginUser().getUserId()); |
| | | //查询是否已经存在群聊 |
| | | // long imCount = this.iImGroupService.count(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId()) |
| | | // .eq(ImGroup::getGroupType,2).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()).eq(ImGroup::getIsDelete,0)); |
| | | // if ( imCount ==0l ){ |
| | | //生成群聊 |
| | | iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId()); |
| | | |
| | | // } |
| | | |
| | | }else { |
| | | counsellingOrder.setStatusFlag(0); |
| | | |
| | | } |
| | | } |
| | | |
| | | //是否后台创建 |
| | | if (counsellingOrderRequest.getIsBack()){ |
| | | |
| | | if (counsellingUserOld == null ){ |
| | | CounsellingUser counsellingUser = BeanUtil.copyProperties(counsellingOrder,CounsellingUser.class); |
| | | counsellingUser.setId(null); |
| | | counsellingUser.setIsFirstAppointment(1); |
| | | this.counsellingUserService.save(counsellingUser); |
| | | }else{ |
| | | if (counsellingOrder.getOrderType().intValue() != 1){ |
| | | if (counsellingUserOld.getEffectiveBeginTime() == null){ |
| | | counsellingUserOld.setEffectiveBeginTime(counsellingOrder.getEffectiveBeginTime()); |
| | | } |
| | | counsellingUserOld.setEffectiveEndTime(counsellingOrder.getEffectiveEndTime()); |
| | | counsellingUserOld.setClassHours(counsellingUserOld.getClassHours() !=null ? counsellingUserOld.getClassHours().intValue() + counsellingOrder.getClassHours().intValue():counsellingOrder.getClassHours()); |
| | | counsellingUserOld.setResidueClassHours(counsellingUserOld.getResidueClassHours() !=null ? counsellingUserOld.getResidueClassHours().intValue() + counsellingOrder.getResidueClassHours().intValue():counsellingOrder.getResidueClassHours()); |
| | | counsellingUserOld.setStatusFlag(counsellingOrder.getStatusFlag()); |
| | | }else { |
| | | counsellingUserOld.setUserInfoJson(counsellingOrder.getUserInfoJson()); |
| | | counsellingUserOld.setIsFirstAppointment(1); |
| | | } |
| | | if (counsellingUserOld.getCompanionUserId() != null){ |
| | | counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId()); |
| | | }else{ |
| | | counsellingUserOld.setCompanionUserId(counsellingOrder.getCompanionUserId()); |
| | | } |
| | | if (counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else{ |
| | | counsellingUserOld.setConsultantUserId(counsellingOrder.getConsultantUserId()); |
| | | } |
| | | if (StrUtil.isBlank(counsellingUserOld.getPhone()) && StrUtil.isNotBlank(counsellingOrder.getPhone())){ |
| | | counsellingUserOld.setPhone(counsellingOrder.getPhone()); |
| | | } |
| | | if (StrUtil.isBlank(counsellingUserOld.getUserInfoJson()) && StrUtil.isNotBlank(counsellingOrder.getUserInfoJson())){ |
| | | counsellingUserOld.setUserInfoJson(counsellingOrder.getUserInfoJson()); |
| | | } |
| | | counsellingUserOld.setStatusFlag(counsellingOrder.getStatusFlag()); |
| | | this.counsellingUserService.updateById(counsellingUserOld); |
| | | |
| | | } |
| | | } |
| | | if (counsellingOrderRequest.getIsBack()){ |
| | | counsellingOrder.setPayTime(new Date()); |
| | | } |
| | | this.save(counsellingOrder); |
| | | //分配咨询顾问 |
| | | if (customerOld.getConsultWorkerId() == null && counsellingOrder.getConsultantUserId() != null ){ |
| | | customerOld.setConsultWorkerId(counsellingOrder.getConsultantUserId()); |
| | | this.customerService.updateCustomerRemoveCache(customerOld); |
| | | |
| | | } |
| | | |
| | | return counsellingOrder; |
| | | } |
| | | |
| | | @Override |
| | | public void payCounsellingOrder(OrderPayRequest orderPayRequest) { |
| | | CounsellingOrder counsellingOrder = this.getOne(new LambdaQueryWrapper<CounsellingOrder>().eq(CounsellingOrder::getOrderNo,orderPayRequest.getOrderNo())); |
| | | counsellingOrder.setTransactionNo(orderPayRequest.getTransactionNo()); |
| | | counsellingOrder.setStatusFlag(1); |
| | | counsellingOrder.setPayTime(new Date()); |
| | | counsellingOrder.setPayType(orderPayRequest.getPayType()); |
| | | //查询客户信息 |
| | | Customer customerold = this.customerService.getById(counsellingOrder.getUserId()); |
| | | CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrder.getCounsellingInfoId()); |
| | | //判断是否有用户咨询师信息 |
| | | CounsellingUser counsellingUserOld = this.counsellingUserService.getOne(new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getCounsellingInfoId,counsellingOrder.getCounsellingInfoId()) |
| | | .eq(CounsellingUser::getUserId,counsellingOrder.getUserId())); |
| | | //订单类型 1-首次咨询,2-咨询疗程,3-课程续费 |
| | | if (counsellingOrder.getOrderType().intValue() == 1){ |
| | | Customer customer = JSONUtil.toBean(counsellingOrder.getUserInfoJson(),Customer.class); |
| | | //生成预约记录 |
| | | CounsellingOrderReservation counsellingOrderReservation = new CounsellingOrderReservation(); |
| | | counsellingOrderReservation.setCounsellingOrderId(counsellingOrder.getId()); |
| | | counsellingOrderReservation.setCounsellingInfoId(counsellingOrder.getCounsellingInfoId()); |
| | | counsellingOrderReservation.setCompanionUserId(counsellingOrder.getCompanionUserId()); |
| | | counsellingOrderReservation.setConsultantUserId(counsellingOrder.getConsultantUserId()); |
| | | counsellingOrderReservation.setRemark(customer.getCurrentRemark()); |
| | | counsellingOrderReservation.setUserId(counsellingOrder.getUserId()); |
| | | //预约类型 1-首次面诊,2-咨询疗程 |
| | | counsellingOrderReservation.setReservationType(1); |
| | | String reservDate = DateUtil.formatDate(counsellingOrder.getFirstAppointmentDate()); |
| | | String[] times = counsellingOrder.getFirstAppointmentTimes().split("-"); |
| | | counsellingOrderReservation.setReservationBeginTime(DateUtil.parse(reservDate+" "+times[0]+":00")); |
| | | counsellingOrderReservation.setReservationEndTime(DateUtil.parse(reservDate+" "+times[1]+":00")); |
| | | //预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝 - 首次面诊直接待服务 |
| | | counsellingOrderReservation.setStauts(2); |
| | | this.counsellingOrderReservationService.save(counsellingOrderReservation); |
| | | |
| | | // 推送消息内容 |
| | | // String pushContent = "我购买了心理咨询疗程,需要咨询"; |
| | | // // IM推送数据json |
| | | // ImPushDataDTO pushData = ImPushDataDTO.builder() |
| | | // .type(ImPushTypeEnum.S_TO_W_TIP_CONSULT_PAY_SUCCESS.getCode()) |
| | | // .objId(ObjUtil.toString(counsellingOrderReservation.getId())) |
| | | // .title("通知") |
| | | // .content(pushContent) |
| | | //// .extra("心理咨询疗程") |
| | | // .build(); |
| | | // // 发送首次预约 |
| | | // imBizService.messageSendGroup(counsellingOrderReservation.getUserId()+"", new String[]{counsellingOrderReservation.getUserId()+""}, pushData); |
| | | } else if (counsellingOrder.getOrderType().intValue() == 2){ |
| | | |
| | | if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else{ |
| | | if (customerold.getConsultWorkerId() != null){ |
| | | counsellingOrder.setConsultantUserId(customerold.getConsultWorkerId()); |
| | | }else{ |
| | | Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer2 != null){ |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer2.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer2.getCustomerId()); |
| | | }else { |
| | | Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer3 != null){ |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer3.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer3.getCustomerId()); |
| | | }else{ |
| | | throw new ServiceException("没有在线的咨询顾问!"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | // Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode()); |
| | | // if (customer2 != null){ |
| | | // //咨询顾问id |
| | | // counsellingOrder.setConsultantUserId(customer2.getCustomerId()); |
| | | // }else { |
| | | // throw new ServiceException("没有在线的咨询顾问!"); |
| | | // } |
| | | CounsellingSetMeal counsellingSetMeal = JSONUtil.toBean(counsellingOrder.getSetMealJson(),CounsellingSetMeal.class); |
| | | //是否赠送陪护 |
| | | if (counsellingSetMeal.getIsGive() != null && counsellingSetMeal.getIsGive().intValue() == 1){ |
| | | if (counsellingUserOld != null && counsellingUserOld.getCompanionUserId() != null){ |
| | | //陪护教练id |
| | | counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId()); |
| | | }else if (counsellingUserOld != null && counsellingUserOld.getCompanionUserId() == null){ |
| | | |
| | | Customer customerCompanion = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customerCompanion != null){ |
| | | //陪护教练id |
| | | counsellingOrder.setCompanionUserId(customerCompanion.getCustomerId()); |
| | | counsellingUserOld.setCompanionUserId(customerCompanion.getCustomerId()); |
| | | }else{ |
| | | Customer customerCompanion2 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customerCompanion2 != null){ |
| | | //陪护教练id |
| | | counsellingOrder.setCompanionUserId(customerCompanion2.getCustomerId()); |
| | | counsellingUserOld.setCompanionUserId(customerCompanion2.getCustomerId()); |
| | | }else{ |
| | | throw new ServiceException("没有在线的陪护教练!"); |
| | | } |
| | | } |
| | | } |
| | | // Customer customerCompanion = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_23.getCode()); |
| | | // if (customerCompanion != null){ |
| | | // //陪护教练id |
| | | // counsellingOrder.setCompanionUserId(customerCompanion.getCustomerId()); |
| | | // }else{ |
| | | // throw new ServiceException("没有在线的陪护教练!"); |
| | | // } |
| | | } |
| | | counsellingOrder.setEffectiveBeginTime(new Date()); |
| | | counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay()))); |
| | | |
| | | //生成群聊 |
| | | // //查询是否已经存在群聊 |
| | | // long imCount = this.iImGroupService.count(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId()) |
| | | // .eq(ImGroup::getGroupType,2).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()).eq(ImGroup::getIsDelete,0)); |
| | | // if ( imCount ==0l ){ |
| | | //生成群聊 |
| | | // iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId()); |
| | | if (counsellingSetMeal.getIsGive() != null && counsellingSetMeal.getIsGive().intValue() == 1){ |
| | | //生成群聊 |
| | | iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId()); |
| | | |
| | | }else{ |
| | | //生成群聊 |
| | | iImGroupService.createGroup(2,null,null,counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId()); |
| | | |
| | | } |
| | | // } |
| | | } else if (counsellingOrder.getOrderType().intValue() == 3) { |
| | | if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else{ |
| | | if (customerold.getConsultWorkerId() != null){ |
| | | counsellingOrder.setConsultantUserId(customerold.getConsultWorkerId()); |
| | | }else{ |
| | | Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer2 != null){ |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer2.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer2.getCustomerId()); |
| | | }else { |
| | | Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (customer3 != null){ |
| | | //咨询顾问id |
| | | counsellingOrder.setConsultantUserId(customer3.getCustomerId()); |
| | | // counsellingUserOld.setConsultantUserId(customer3.getCustomerId()); |
| | | }else{ |
| | | throw new ServiceException("没有在线的咨询顾问!"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | CounsellingSetMeal counsellingSetMeal = JSONUtil.toBean(counsellingOrder.getSetMealJson(),CounsellingSetMeal.class); |
| | | Date nowDate = new Date(); |
| | | if (counsellingUserOld == null || counsellingUserOld.getEffectiveEndTime().getTime() < nowDate.getTime()){ |
| | | counsellingOrder.setEffectiveBeginTime(nowDate); |
| | | counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay()))); |
| | | }else{ |
| | | counsellingOrder.setEffectiveBeginTime(counsellingUserOld.getEffectiveEndTime()); |
| | | counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay()))); |
| | | |
| | | } |
| | | //查询是否已经存在群聊 |
| | | // long imCount = this.iImGroupService.count(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId()) |
| | | // .eq(ImGroup::getGroupType,2).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()).eq(ImGroup::getIsDelete,0)); |
| | | // if ( imCount ==0l ){ |
| | | //生成群聊 |
| | | iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId()); |
| | | |
| | | // } |
| | | //生成群聊 |
| | | // iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getId()); |
| | | } |
| | | |
| | | //添加咨询用户信息 |
| | | if (counsellingUserOld == null ){ |
| | | CounsellingUser counsellingUser = BeanUtil.copyProperties(counsellingOrder,CounsellingUser.class); |
| | | counsellingUser.setId(null); |
| | | counsellingUser.setIsFirstAppointment(2); |
| | | this.counsellingUserService.save(counsellingUser); |
| | | }else{ |
| | | if (counsellingOrder.getOrderType().intValue() != 1){ |
| | | if (counsellingUserOld.getEffectiveBeginTime() == null){ |
| | | counsellingUserOld.setEffectiveBeginTime(counsellingOrder.getEffectiveBeginTime()); |
| | | } |
| | | counsellingUserOld.setEffectiveEndTime(counsellingOrder.getEffectiveEndTime()); |
| | | counsellingUserOld.setClassHours(counsellingUserOld.getClassHours() !=null ? counsellingUserOld.getClassHours().intValue() + counsellingOrder.getClassHours().intValue():counsellingOrder.getClassHours()); |
| | | counsellingUserOld.setResidueClassHours(counsellingUserOld.getResidueClassHours() !=null ? counsellingUserOld.getResidueClassHours().intValue() + counsellingOrder.getResidueClassHours().intValue():counsellingOrder.getResidueClassHours()); |
| | | counsellingUserOld.setStatusFlag(counsellingOrder.getStatusFlag()); |
| | | }else { |
| | | counsellingUserOld.setUserInfoJson(counsellingOrder.getUserInfoJson()); |
| | | counsellingUserOld.setIsFirstAppointment(2); |
| | | } |
| | | if (StrUtil.isBlank(counsellingUserOld.getUserInfoJson()) && StrUtil.isNotBlank(counsellingOrder.getUserInfoJson())){ |
| | | counsellingUserOld.setUserInfoJson(counsellingOrder.getUserInfoJson()); |
| | | } |
| | | if (counsellingUserOld.getCompanionUserId() != null){ |
| | | counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId()); |
| | | }else{ |
| | | counsellingUserOld.setCompanionUserId(counsellingOrder.getCompanionUserId()); |
| | | } |
| | | if (counsellingUserOld.getConsultantUserId() != null){ |
| | | counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId()); |
| | | }else{ |
| | | counsellingUserOld.setConsultantUserId(counsellingOrder.getConsultantUserId()); |
| | | } |
| | | if (StrUtil.isBlank(counsellingUserOld.getPhone()) && StrUtil.isNotBlank(counsellingOrder.getPhone())){ |
| | | counsellingUserOld.setPhone(counsellingOrder.getPhone()); |
| | | } |
| | | counsellingUserOld.setStatusFlag(counsellingOrder.getStatusFlag()); |
| | | this.counsellingUserService.updateById(counsellingUserOld); |
| | | |
| | | } |
| | | this.updateById(counsellingOrder); |
| | | //分配咨询顾问 |
| | | if (customerold.getConsultWorkerId() == null && counsellingOrder.getConsultantUserId() != null ){ |
| | | |
| | | // Customer customer = JSONUtil.toBean(counsellingOrder.getUserInfoJson(),Customer.class); |
| | | // if (customer != null){ |
| | | // customer.setCustomerId(counsellingOrder.getUserId()); |
| | | // customerold.setRealName(customer.getRealName()); |
| | | // customerold.setSex(customer.getSex()); |
| | | // customerold.setAvatar(customer.getAvatar()); |
| | | // customerold.setAvatarObjectName(customer.getAvatarObjectName()); |
| | | // customerold.setLinkPhone(customer.getLinkPhone()); |
| | | // customerold.setBirthday(customer.getBirthday()); |
| | | // customerold.setEmail(customer.getEmail()); |
| | | // customerold.setEducationLevel(customer.getEducationLevel()); |
| | | // customerold.setOccupation(customer.getOccupation()); |
| | | // customerold.setMarital(customer.getMarital()); |
| | | // customerold.setCityCode(customer.getCityCode()); |
| | | // customerold.setIncome(customer.getIncome()); |
| | | // customerold.setChildAge(customer.getChildAge()); |
| | | // } |
| | | |
| | | customerold.setConsultWorkerId(counsellingOrder.getConsultantUserId()); |
| | | this.customerService.updateCustomerRemoveCache(customerold); |
| | | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public CounsellingOrder getCounsellingOrderByNo(String orderNo) { |
| | | return this.getOne( |
| | | Wrappers.<CounsellingOrder>lambdaQuery() |
| | | .eq(CounsellingOrder::getOrderNo, orderNo) |
| | | .last("limit 1") |
| | | ); |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingReservationRecord; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingReservationRecordMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingReservationRecordService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询记录信息 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CounsellingReservationRecordServiceImpl extends ServiceImpl<CounsellingReservationRecordMapper, CounsellingReservationRecord> implements ICounsellingReservationRecordService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingReservationWork; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingReservationWorkMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingReservationWorkService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询作业 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CounsellingReservationWorkServiceImpl extends ServiceImpl<CounsellingReservationWorkMapper, CounsellingReservationWork> implements ICounsellingReservationWorkService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingSetMealMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingSetMealService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询套餐信息 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class CounsellingSetMealServiceImpl extends ServiceImpl<CounsellingSetMealMapper, CounsellingSetMeal> implements ICounsellingSetMealService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingSpecialTimeConfig; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingSpecialTimeConfigMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingSpecialTimeConfigService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询预约特殊时间配置 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CounsellingSpecialTimeConfigServiceImpl extends ServiceImpl<CounsellingSpecialTimeConfigMapper, CounsellingSpecialTimeConfig> implements ICounsellingSpecialTimeConfigService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingTag; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingTagMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingTagService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询擅长领域标签表 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class CounsellingTagServiceImpl extends ServiceImpl<CounsellingTagMapper, CounsellingTag> implements ICounsellingTagService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingTimeConfigMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingTimeConfigService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 咨询预约时间配置 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CounsellingTimeConfigServiceImpl extends ServiceImpl<CounsellingTimeConfigMapper, CounsellingTimeConfig> implements ICounsellingTimeConfigService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.request.CounsellingUserRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingUser; |
| | | import cn.stylefeng.guns.modular.business.mapper.CounsellingUserMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICounsellingUserService; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户咨询师课时信息 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-02-29 |
| | | */ |
| | | @Service |
| | | public class CounsellingUserServiceImpl extends ServiceImpl<CounsellingUserMapper, CounsellingUser> implements ICounsellingUserService { |
| | | |
| | | @Override |
| | | public Page<CounsellingUser> findCounsellingUserPage(Page<CounsellingUser> page, CounsellingUserRequest counsellingUserRequest) { |
| | | return this.baseMapper.findCounsellingUserPage(page, counsellingUserRequest); |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.stylefeng.guns.modular.business.entity.CourseChapter; |
| | | import cn.stylefeng.guns.modular.business.mapper.CourseChapterMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICourseChapterService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * 章节管理 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class CourseChapterServiceImpl extends ServiceImpl<CourseChapterMapper, CourseChapter> implements ICourseChapterService { |
| | | |
| | | /** |
| | | * 根据课程id获取章节层次信息 |
| | | * @param courseId 课程id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<CourseChapter> getAllByCourseId(Long courseId) { |
| | | List<CourseChapter> courseChapterList = this.list(new LambdaQueryWrapper<CourseChapter>().eq(CourseChapter::getCourseId,courseId).eq(CourseChapter::getIsDelete,false) |
| | | .eq(CourseChapter::getParentId,0L)); |
| | | //获取一级章节目录 |
| | | if (CollectionUtil.isNotEmpty(courseChapterList)) { |
| | | //获取所有子集章节信息 |
| | | List<CourseChapter> courseChapterChildList = this.list(new LambdaQueryWrapper<CourseChapter>().eq(CourseChapter::getCourseId,courseId).eq(CourseChapter::getIsDelete,false) |
| | | .ne(CourseChapter::getParentId,0L)); |
| | | if (CollectionUtil.isNotEmpty(courseChapterChildList)){ |
| | | Map<Long,List<CourseChapter>> courseChapterMap = new HashMap<>(); |
| | | //处理课程下面非一级的章节内容,形成统一map |
| | | courseChapterChildList.stream().forEach(courseChapter -> { |
| | | if (ObjectUtil.isNotEmpty(courseChapterMap.get(courseChapter.getParentId()))){ |
| | | List<CourseChapter> courseChapterList1 = courseChapterMap.get(courseChapter.getParentId()); |
| | | courseChapterList1.add(courseChapter); |
| | | }else{ |
| | | List<CourseChapter> childCourseChapList = new ArrayList<>(); |
| | | childCourseChapList.add(courseChapter); |
| | | courseChapterMap.put(courseChapter.getParentId(),childCourseChapList); |
| | | } |
| | | }); |
| | | |
| | | if (ObjectUtil.isNotEmpty(courseChapterMap)){ |
| | | return this.getChildCourseChapter(courseChapterMap,courseChapterList); |
| | | } |
| | | } |
| | | |
| | | } |
| | | return courseChapterList; |
| | | } |
| | | |
| | | /** |
| | | * 处理层次章节信息 |
| | | * @param courseChapterMap 子集章节map信息 |
| | | * @param courseChapterList 高层级章节信息 |
| | | * @return |
| | | */ |
| | | private List<CourseChapter> getChildCourseChapter(Map<Long,List<CourseChapter>> courseChapterMap,List<CourseChapter> courseChapterList){ |
| | | if (ObjectUtil.isNotEmpty(courseChapterMap)){ |
| | | courseChapterList.forEach(courseChapter -> { |
| | | List<CourseChapter> childCourseChapterList = courseChapterMap.get(courseChapter.getId()); |
| | | if (ObjectUtil.isNotEmpty(childCourseChapterList)){ |
| | | childCourseChapterList = this.getChildCourseChapter(courseChapterMap,childCourseChapterList); |
| | | courseChapter.setChildList(childCourseChapterList); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | return courseChapterList; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.CourseOrderResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.CourseResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CourseOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.CoursePlaceOrderRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.Course; |
| | | import cn.stylefeng.guns.modular.business.entity.CourseChapter; |
| | | import cn.stylefeng.guns.modular.business.entity.CourseOrder; |
| | | import cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate; |
| | | import cn.stylefeng.guns.modular.business.mapper.CourseOrderMapper; |
| | | import cn.stylefeng.guns.modular.business.service.*; |
| | | import cn.stylefeng.guns.utils.GeneralUtil; |
| | | import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; |
| | | import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; |
| | | import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService; |
| | | import cn.stylefeng.roses.kernel.rule.enums.*; |
| | | import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程订单信息 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CourseOrderServiceImpl extends ServiceImpl<CourseOrderMapper, CourseOrder> implements ICourseOrderService { |
| | | |
| | | @Autowired |
| | | private ICourseChapterService courseChapterService; |
| | | |
| | | @Autowired |
| | | private ICouserChapterLearningRateService couserChapterLearningRateService; |
| | | |
| | | @Autowired |
| | | private ICourseService courseService; |
| | | |
| | | @Autowired |
| | | private CustomerService customerService; |
| | | |
| | | @Autowired |
| | | private IImGroupService iImGroupService; |
| | | |
| | | @Resource |
| | | private ImBizService imBizService; |
| | | |
| | | |
| | | @Override |
| | | public Page<CourseOrderResponseDTO> findCounseOrderPage(Page<CourseOrderResponseDTO> page, CourseOrderRequest courseOrderRequest) { |
| | | return this.baseMapper.findCounseOrderPage(page, courseOrderRequest); |
| | | } |
| | | |
| | | @Override |
| | | public CourseOrderResponseDTO getCourseChapterInfoByOrderId(Long orderId) { |
| | | CourseOrderResponseDTO courseOrderResponseDTO = BeanUtil.copyProperties(this.getById(orderId),CourseOrderResponseDTO.class); |
| | | //查询章节信息 |
| | | List<CourseChapter> courseChapterList = this.courseChapterService.getAllByCourseId(courseOrderResponseDTO.getCourseId()); |
| | | //查询章节学习进度 |
| | | List<CouserChapterLearningRate> couserChapterLearningRates = this.couserChapterLearningRateService.list(new LambdaQueryWrapper<CouserChapterLearningRate>().eq(CouserChapterLearningRate::getCourseId,courseOrderResponseDTO.getCourseId()) |
| | | .eq(CouserChapterLearningRate::getCourseOrderId,orderId)); |
| | | Map<Long,CouserChapterLearningRate> learnMap = new HashMap<>(); |
| | | if (CollectionUtil.isNotEmpty(couserChapterLearningRates)){ |
| | | learnMap = couserChapterLearningRates.stream().collect(Collectors.toMap(CouserChapterLearningRate::getCourseChapterId, Function.identity())); |
| | | courseOrderResponseDTO.setStudyCourseChapter(learnMap.size()); |
| | | } |
| | | //查询总课程章节 |
| | | long totalChapter = this.courseChapterService.count(new LambdaQueryWrapper<CourseChapter>().eq(CourseChapter::getCourseId,courseOrderResponseDTO.getCourseId()) |
| | | .eq(CourseChapter::getIsDelete,false).ne(CourseChapter::getParentId,0).isNotNull(CourseChapter::getMinuteNum)); |
| | | courseOrderResponseDTO.setTotalCourseChapter(Integer.parseInt(totalChapter+"")); |
| | | //处理课程学习进度 |
| | | List<CourseResponseDTO.CourseChapterResponseDTO> courseChapterResponseDTOList = new ArrayList<>(); |
| | | courseChapterResponseDTOList = turnChapterResponseDTO(courseChapterResponseDTOList,courseChapterList,learnMap); |
| | | courseOrderResponseDTO.setCourseChapterResponseDTOList(courseChapterResponseDTOList); |
| | | return courseOrderResponseDTO; |
| | | } |
| | | |
| | | |
| | | |
| | | private List<CourseResponseDTO.CourseChapterResponseDTO> turnChapterResponseDTO(List<CourseResponseDTO.CourseChapterResponseDTO> courseChapterResponseDTOList,List<CourseChapter> courseChapterList, |
| | | Map<Long,CouserChapterLearningRate> learnMap){ |
| | | if (CollectionUtil.isNotEmpty(courseChapterList)){ |
| | | courseChapterResponseDTOList.addAll(BeanUtil.copyToList(courseChapterList,CourseResponseDTO.CourseChapterResponseDTO.class)); |
| | | courseChapterResponseDTOList.forEach(courseChapterResponseDTO -> { |
| | | if (learnMap.get(courseChapterResponseDTO.getId()) != null){ |
| | | CouserChapterLearningRate couserChapterLearningRate = learnMap.get(courseChapterResponseDTO.getId()); |
| | | courseChapterResponseDTO.setLearnedTime(couserChapterLearningRate.getLearnedTime()); |
| | | courseChapterResponseDTO.setTotalTime(couserChapterLearningRate.getTotalTime()); |
| | | courseChapterResponseDTO.setLastStudyTime(couserChapterLearningRate.getLastStudyTime()); |
| | | } |
| | | }); |
| | | courseChapterList.stream().forEach(courseChapter -> { |
| | | if (CollectionUtil.isNotEmpty(courseChapter.getChildList())){ |
| | | List<CourseResponseDTO.CourseChapterResponseDTO> courseChapterResponseDTOS = new ArrayList<>(); |
| | | this.turnChapterResponseDTO(courseChapterResponseDTOS,courseChapter.getChildList(),learnMap); |
| | | courseChapterResponseDTOList.forEach(courseChapterResponseDTO -> { |
| | | if (courseChapterResponseDTO.getId().longValue() == courseChapter.getId().longValue()){ |
| | | courseChapterResponseDTO.setChildCourseChapterResponseDTOList(courseChapterResponseDTOS); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | return courseChapterResponseDTOList; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public CourseOrder createCourseOrder(CoursePlaceOrderRequest coursePlaceOrderRequest) { |
| | | Course course = this.courseService.getById(coursePlaceOrderRequest.getCourseId()); |
| | | CourseOrder courseOrder = new CourseOrder(); |
| | | courseOrder.setUserId(coursePlaceOrderRequest.getUserId()); |
| | | courseOrder.setCourseId(coursePlaceOrderRequest.getCourseId()); |
| | | courseOrder.setCreateUser(LoginContext.me().getLoginUser().getUserId()); |
| | | //生成单号 |
| | | courseOrder.setOrderNo(GeneralUtil.generateOrderNo(OrderTypeEnum.COURSE_ORDER)); |
| | | |
| | | courseOrder.setCourseJson(JSONUtil.toJsonStr(course)); |
| | | courseOrder.setTotalTime(course.getTotalTime()); |
| | | courseOrder.setLearnedTime(0l); |
| | | courseOrder.setOrderAmount(course.getPrice()); |
| | | courseOrder.setPayAmount(courseOrder.getOrderAmount()); |
| | | Customer customerOld = this.customerService.getById(coursePlaceOrderRequest.getUserId()); |
| | | //是否是后台创建订单 |
| | | |
| | | if (customerOld.getClassWorkerId() != null){ |
| | | courseOrder.setCourseUserId(customerOld.getClassWorkerId()); |
| | | }else{ |
| | | //幸福顾问 |
| | | Customer worker = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_11.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (worker != null){ |
| | | courseOrder.setCourseUserId(worker.getCustomerId()); |
| | | }else{ |
| | | Customer worker3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_11.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (worker3 != null){ |
| | | courseOrder.setCourseUserId(worker3.getCustomerId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //课程辅导 |
| | | Customer worker2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_12.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (worker2 != null){ |
| | | courseOrder.setTutoringUserId(worker2.getCustomerId()); |
| | | }else{ |
| | | Customer worker3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_12.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (worker3 != null){ |
| | | courseOrder.setTutoringUserId(worker3.getCustomerId()); |
| | | } |
| | | } |
| | | if (coursePlaceOrderRequest.getIsBack()){ |
| | | Customer customer = this.customerService.getById(coursePlaceOrderRequest.getUserId()); |
| | | courseOrder.setPhone(customer.getTelephone()); |
| | | |
| | | courseOrder.setPayTime(new Date()); |
| | | courseOrder.setStatusFlag(1); |
| | | Date nowDate = new Date(); |
| | | courseOrder.setEffectiveBeginTime(nowDate); |
| | | courseOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(nowDate,course.getCourseValidity()))); |
| | | this.save(courseOrder); |
| | | //生成群聊 |
| | | iImGroupService.createGroup(1,null,null,null,courseOrder.getCourseUserId(),courseOrder.getTutoringUserId(),courseOrder.getUserId(),courseOrder.getId()); |
| | | UpdateWrapper<Course> courseUpdateWrapper = new UpdateWrapper<Course>().setSql(" buy_num = buy_num+1 "); |
| | | //添加购买人数 |
| | | this.courseService.update(courseUpdateWrapper.lambda().eq(Course::getId,courseOrder.getCourseId())); |
| | | }else{ |
| | | courseOrder.setPhone(coursePlaceOrderRequest.getPhone()); |
| | | courseOrder.setPayType(coursePlaceOrderRequest.getPayType()); |
| | | courseOrder.setStatusFlag(0); |
| | | this.save(courseOrder); |
| | | } |
| | | |
| | | if (customerOld.getClassWorkerId() == null && courseOrder.getCourseUserId() != null){ |
| | | customerOld.setClassWorkerId(courseOrder.getCourseUserId()); |
| | | this.customerService.updateCustomerRemoveCache(customerOld); |
| | | // if (!coursePlaceOrderRequest.getIsBack()){ |
| | | // |
| | | // // 推送消息内容 |
| | | // String pushContent = "用户:"+customerOld.getNickName()+",有未支付的课程订单,"; |
| | | // // IM推送数据json |
| | | // ImPushDataDTO pushData = ImPushDataDTO.builder() |
| | | // .type(ImPushTypeEnum.S_TO_W_TIP_COURSE_NOT_PAY.getCode()) |
| | | // .objId(ObjUtil.toString(courseOrder.getId())) |
| | | // .title("通知") |
| | | // .content(pushContent) |
| | | //// .extra("去查看。") |
| | | // .build(); |
| | | // // 发送预约提示 |
| | | // imBizService.messageSendSystem(courseOrder.getUserId()+"", new String[]{customerOld.getClassWorkerId()+""}, pushData, ImUserTypeEnum.WORKER, PostIdEnum.PO_11, true); |
| | | // |
| | | // } |
| | | } |
| | | |
| | | return courseOrder; |
| | | } |
| | | |
| | | @Override |
| | | public void payCourseOrder(OrderPayRequest orderPayRequest) { |
| | | CourseOrder courseOrder = this.getOne(new LambdaQueryWrapper<CourseOrder>().eq(CourseOrder::getOrderNo,orderPayRequest.getOrderNo())); |
| | | if (courseOrder == null){ |
| | | throw new ServiceException("订单号不存在!"); |
| | | } |
| | | Course course = this.courseService.getById(courseOrder.getCourseId()); |
| | | courseOrder.setTransactionNo(orderPayRequest.getTransactionNo()); |
| | | courseOrder.setStatusFlag(1); |
| | | courseOrder.setPayTime(new Date()); |
| | | courseOrder.setPayType(orderPayRequest.getPayType()); |
| | | Customer customerOld = this.customerService.getById(courseOrder.getUserId()); |
| | | if (courseOrder.getCourseUserId() == null){ |
| | | //幸福顾问 |
| | | if (customerOld.getClassWorkerId() != null){ |
| | | courseOrder.setCourseUserId(customerOld.getClassWorkerId()); |
| | | }else{ |
| | | //幸福顾问 |
| | | Customer worker = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_11.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (worker != null){ |
| | | courseOrder.setCourseUserId(worker.getCustomerId()); |
| | | }else{ |
| | | Customer worker3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_11.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (worker3 != null){ |
| | | courseOrder.setCourseUserId(worker3.getCustomerId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (courseOrder.getTutoringUserId() == null) { |
| | | //课程辅导 |
| | | Customer worker2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_12.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (worker2 != null) { |
| | | courseOrder.setTutoringUserId(worker2.getCustomerId()); |
| | | } else { |
| | | Customer worker3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_12.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode()); |
| | | if (worker3 != null) { |
| | | courseOrder.setTutoringUserId(worker3.getCustomerId()); |
| | | } |
| | | } |
| | | } |
| | | Date nowDate = new Date(); |
| | | courseOrder.setEffectiveBeginTime(nowDate); |
| | | courseOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(nowDate,course.getCourseValidity()))); |
| | | //生成群聊 |
| | | iImGroupService.createGroup(1,null,null,null,courseOrder.getCourseUserId(),courseOrder.getTutoringUserId(),courseOrder.getUserId(),courseOrder.getId()); |
| | | UpdateWrapper<Course> courseUpdateWrapper = new UpdateWrapper<Course>().setSql(" buy_num = buy_num+1 "); |
| | | //添加购买人数 |
| | | this.courseService.update(courseUpdateWrapper.lambda().eq(Course::getId,courseOrder.getCourseId())); |
| | | this.updateById(courseOrder); |
| | | if (customerOld.getClassWorkerId() == null && courseOrder.getCourseUserId() != null){ |
| | | customerOld.setClassWorkerId(courseOrder.getCourseUserId()); |
| | | this.customerService.updateCustomerRemoveCache(customerOld); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public CourseOrder getCourseOrderByNo(String orderNo) { |
| | | return this.getOne( |
| | | Wrappers.<CourseOrder>lambdaQuery() |
| | | .eq(CourseOrder::getOrderNo, orderNo) |
| | | .last("limit 1") |
| | | ); |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Course; |
| | | import cn.stylefeng.guns.modular.business.mapper.CourseMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICourseService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程管理 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> implements ICourseService { |
| | | |
| | | /** |
| | | * 查询标签是否被引用 |
| | | * @param tagIds 标签ids |
| | | * @return |
| | | */ |
| | | @Override |
| | | public long getCountCourse(List<String> tagIds) { |
| | | return this.baseMapper.getCountCourse(tagIds); |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseStudyNote; |
| | | import cn.stylefeng.guns.modular.business.mapper.CourseStudyNoteMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICourseStudyNoteService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程学习笔记 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CourseStudyNoteServiceImpl extends ServiceImpl<CourseStudyNoteMapper, CourseStudyNote> implements ICourseStudyNoteService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseTag; |
| | | import cn.stylefeng.guns.modular.business.mapper.CourseTagMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICourseTagService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程标签 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class CourseTagServiceImpl extends ServiceImpl<CourseTagMapper, CourseTag> implements ICourseTagService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CourseUserLearned; |
| | | import cn.stylefeng.guns.modular.business.mapper.CourseUserLearnedMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICourseUserLearnedService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程学习记录 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CourseUserLearnedServiceImpl extends ServiceImpl<CourseUserLearnedMapper, CourseUserLearned> implements ICourseUserLearnedService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate; |
| | | import cn.stylefeng.guns.modular.business.mapper.CouserChapterLearningRateMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ICouserChapterLearningRateService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 课程章节学习进度 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class CouserChapterLearningRateServiceImpl extends ServiceImpl<CouserChapterLearningRateMapper, CouserChapterLearningRate> implements ICouserChapterLearningRateService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.stylefeng.guns.modular.business.service.ExcelService; |
| | | import cn.stylefeng.guns.utils.ExportUtil; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | |
| | | |
| | | @Service |
| | | public class ExcelServiceImpl implements ExcelService { |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.Help; |
| | | import cn.stylefeng.guns.modular.business.mapper.HelpMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IHelpService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 帮助 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class HelpServiceImpl extends ServiceImpl<HelpMapper, Help> implements IHelpService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.util.BooleanUtil; |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.ImNotice; |
| | | import cn.stylefeng.guns.modular.business.service.IImNoticeService; |
| | | import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfo; |
| | | import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; |
| | | import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService; |
| | | import cn.stylefeng.roses.kernel.im.api.ImServerApi; |
| | | import cn.stylefeng.roses.kernel.rule.enums.ImUserTypeEnum; |
| | | import cn.stylefeng.roses.kernel.rule.enums.PostIdEnum; |
| | | import io.rong.messages.BaseMessage; |
| | | import io.rong.messages.TxtMessage; |
| | | import io.rong.models.response.ResponseResult; |
| | | import io.rong.models.response.TokenResult; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | @Slf4j |
| | | @Service |
| | | public class ImBizService { |
| | | |
| | | @Resource |
| | | private ImServerApi imServerApi; |
| | | |
| | | @Resource |
| | | private IImNoticeService imNoticeService; |
| | | |
| | | @Resource |
| | | private CustomerService customerService; |
| | | |
| | | public String getImToken(Long customerId) { |
| | | // 获取用户的详细信息 |
| | | CustomerInfo customerInfo = customerService.getCustomerInfoById(customerId); |
| | | String imToken = customerInfo.getImToken(); |
| | | if (StrUtil.isEmpty(imToken)) { |
| | | // IM用户注册 |
| | | TokenResult tokenResult = imServerApi.userRegister(customerInfo.getCustomerId().toString(), customerInfo.getNickName(), customerInfo.getAvatarObjectUrl()); |
| | | if (tokenResult.getCode() == 200) { |
| | | imToken = tokenResult.getToken(); |
| | | |
| | | // 更新用户IM通讯token |
| | | Customer customer = new Customer(); |
| | | customer.setCustomerId(customerId); |
| | | customer.setImToken(imToken); |
| | | customerService.updateCustomerRemoveCache(customer); |
| | | } |
| | | } |
| | | |
| | | return imToken; |
| | | } |
| | | |
| | | public <T extends BaseMessage> ResponseResult messageSendSystem(String fromUserId, String[] toUserIds, ImPushDataDTO pushData, ImUserTypeEnum userTypeEnum, PostIdEnum postIdEnum, Boolean isSaveImNotice) { |
| | | // 推送json消息 |
| | | String pushDataStr = JSONUtil.toJsonStr(pushData); |
| | | try { |
| | | // 是否保存IM通知 |
| | | if (BooleanUtil.isTrue(isSaveImNotice)) { |
| | | for (String userId : toUserIds) { |
| | | // 保存IM通知 |
| | | imNoticeService.save( |
| | | ImNotice.builder() |
| | | .type(pushData.getType()) |
| | | .userType(userTypeEnum == null ? null : userTypeEnum.getCode()) |
| | | .postId(postIdEnum == null ? null : postIdEnum.getCode()) |
| | | .userId(Long.valueOf(userId)) |
| | | .title(pushData.getTitle()) |
| | | .content(pushData.getContent()) |
| | | .pushJson(pushDataStr) |
| | | .businessId(ObjUtil.toString(pushData.getObjId())) |
| | | .build() |
| | | ); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("保存IM通知异常"); |
| | | e.printStackTrace(); |
| | | } |
| | | if (toUserIds.length > 0) { |
| | | log.info("融云发送群消息:{}", pushDataStr); |
| | | // 融云发送通知 |
| | | return imServerApi.messageSendSystem(fromUserId, toUserIds, new TxtMessage(pushDataStr, pushData.getExtra())); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public <T extends BaseMessage> ResponseResult messageSendPrivate(String fromUserId, String[] toUserIds, ImPushDataDTO pushData) { |
| | | // 推送json消息 |
| | | String pushDataStr = JSONUtil.toJsonStr(pushData); |
| | | if (toUserIds.length > 0) { |
| | | log.info("融云发送单聊消息:{}", pushDataStr); |
| | | // 融云发送单聊消息 |
| | | return imServerApi.messageSendPrivate(fromUserId, toUserIds, new TxtMessage(pushDataStr, pushData.getExtra())); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public <T extends BaseMessage> ResponseResult messageSendGroup(String fromUserId, String[] toUserIds, ImPushDataDTO pushData) { |
| | | // 推送json消息 |
| | | String pushDataStr = JSONUtil.toJsonStr(pushData); |
| | | if (toUserIds.length > 0) { |
| | | log.info("融云发送群消息:{}", pushDataStr); |
| | | // 融云发送群消息 |
| | | return imServerApi.messageSendGroup(fromUserId, toUserIds, new TxtMessage(pushDataStr, pushData.getExtra())); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ArrayUtil; |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.json.JSON; |
| | | import cn.stylefeng.guns.modular.business.dto.ImGroupUserDto; |
| | | import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.*; |
| | | import cn.stylefeng.guns.modular.business.mapper.ImGroupMapper; |
| | | import cn.stylefeng.guns.modular.business.service.*; |
| | | import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; |
| | | import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService; |
| | | import cn.stylefeng.roses.kernel.im.api.ImServerApi; |
| | | import cn.stylefeng.roses.kernel.rule.enums.ImPushTypeEnum; |
| | | import cn.stylefeng.roses.kernel.rule.enums.PostIdEnum; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息群信息 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class ImGroupServiceImpl extends ServiceImpl<ImGroupMapper, ImGroup> implements IImGroupService { |
| | | |
| | | @Resource |
| | | ImServerApi imServerApi; |
| | | |
| | | @Resource |
| | | ImBizService imBizService; |
| | | |
| | | @Resource |
| | | private IImGroupUserService imGroupUserService; |
| | | |
| | | @Resource |
| | | private ICounsellingOrderService counsellingOrderService; |
| | | |
| | | @Resource |
| | | private ICourseOrderService courseOrderService; |
| | | |
| | | @Resource |
| | | private ICounsellingUserService counsellingUserService; |
| | | |
| | | @Resource |
| | | private ICourseService courseService; |
| | | |
| | | |
| | | @Resource |
| | | private CustomerService customerService; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void createGroup(Integer groupType, Long consultantUserId, Long companionUserId, |
| | | Long counsellingUserId, Long courseUserId, Long tutoringUserId,Long userId,Long orderId) { |
| | | ImGroup imGroup = new ImGroup(); |
| | | imGroup.setGroupType(groupType); |
| | | imGroup.setStatusFlag(1); |
| | | imGroup.setOrderId(orderId); |
| | | imGroup.setCreateUser(userId); |
| | | LambdaQueryWrapper<ImGroup> lambdaQueryWrapper = new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getIsDelete,0).eq(ImGroup::getStatusFlag,1); |
| | | lambdaQueryWrapper.eq(ImGroup::getOrderId,orderId); |
| | | lambdaQueryWrapper.eq(ImGroup::getCreateUser,userId); |
| | | //群类型:1课程,2咨询 |
| | | if (groupType.intValue() ==1 ){ |
| | | CourseOrder courseOrder = this.courseOrderService.getById(orderId); |
| | | Course course = this.courseService.getById(courseOrder.getCourseId()); |
| | | Customer customer = this.customerService.getById(courseOrder.getUserId()); |
| | | imGroup.setName(course.getCourseName()+"_"+customer.getNickName()); |
| | | lambdaQueryWrapper.eq(ImGroup::getGroupType,1); |
| | | |
| | | } else if (groupType.intValue() == 2) { |
| | | Customer customer = this.customerService.getById(userId); |
| | | imGroup.setName(DateTime.now().toDateStr()+"_"+customer.getNickName()); |
| | | lambdaQueryWrapper.eq(ImGroup::getGroupType,2); |
| | | } |
| | | List<ImGroupUser> imGroupUserList = new ArrayList<>(); |
| | | List<Long> olduserIdList = new ArrayList<>(); |
| | | //查询是否存在群聊 |
| | | ImGroup imGroup1 = this.baseMapper.selectOne(lambdaQueryWrapper); |
| | | |
| | | if (imGroup1 == null){ |
| | | this.save(imGroup); |
| | | }else{ |
| | | imGroup = imGroup1; |
| | | olduserIdList = this.imGroupUserService.list(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getGroupId,imGroup.getId()).eq(ImGroupUser::getIsDelete,0)) |
| | | .stream().map(ImGroupUser::getUserId).collect(Collectors.toList()); |
| | | } |
| | | |
| | | |
| | | List<String> userIdList = new ArrayList<>(); |
| | | //咨询顾问id |
| | | if (consultantUserId != null){ |
| | | ImGroupUser imGroupUser = new ImGroupUser(); |
| | | imGroupUser.setGroupId(imGroup.getId()); |
| | | imGroupUser.setGroupAlias(imGroup.getName()); |
| | | imGroupUser.setSort(0); |
| | | imGroupUser.setUserId(consultantUserId); |
| | | imGroupUser.setUserPost(PostIdEnum.PO_21.getCode().longValue()); |
| | | |
| | | if (!olduserIdList.contains(consultantUserId)){ |
| | | imGroupUserList.add(imGroupUser); |
| | | userIdList.add(imGroupUser.getUserId().toString()); |
| | | } |
| | | |
| | | } |
| | | //陪护教练id |
| | | if (companionUserId != null){ |
| | | ImGroupUser imGroupUser = new ImGroupUser(); |
| | | imGroupUser.setGroupId(imGroup.getId()); |
| | | imGroupUser.setGroupAlias(imGroup.getName()); |
| | | imGroupUser.setSort(1); |
| | | imGroupUser.setUserId(companionUserId); |
| | | imGroupUser.setUserPost(PostIdEnum.PO_23.getCode().longValue()); |
| | | |
| | | if (!olduserIdList.contains(companionUserId)){ |
| | | imGroupUserList.add(imGroupUser); |
| | | userIdList.add(imGroupUser.getUserId().toString()); |
| | | } |
| | | |
| | | } |
| | | //咨询师id |
| | | if (counsellingUserId != null){ |
| | | ImGroupUser imGroupUser = new ImGroupUser(); |
| | | imGroupUser.setGroupId(imGroup.getId()); |
| | | imGroupUser.setGroupAlias(imGroup.getName()); |
| | | imGroupUser.setSort(2); |
| | | imGroupUser.setUserId(counsellingUserId); |
| | | imGroupUser.setUserPost(PostIdEnum.PO_22.getCode().longValue()); |
| | | |
| | | |
| | | if (!olduserIdList.contains(counsellingUserId)){ |
| | | imGroupUserList.add(imGroupUser); |
| | | userIdList.add(imGroupUser.getUserId().toString()); |
| | | } |
| | | } |
| | | //课程顾问id |
| | | if (courseUserId != null){ |
| | | ImGroupUser imGroupUser = new ImGroupUser(); |
| | | imGroupUser.setGroupId(imGroup.getId()); |
| | | imGroupUser.setGroupAlias(imGroup.getName()); |
| | | imGroupUser.setSort(3); |
| | | imGroupUser.setUserId(courseUserId); |
| | | imGroupUser.setUserPost(PostIdEnum.PO_11.getCode().longValue()); |
| | | |
| | | if (!olduserIdList.contains(courseUserId)){ |
| | | imGroupUserList.add(imGroupUser); |
| | | userIdList.add(imGroupUser.getUserId().toString()); |
| | | } |
| | | |
| | | } |
| | | //课程辅导id |
| | | if (tutoringUserId != null){ |
| | | ImGroupUser imGroupUser = new ImGroupUser(); |
| | | imGroupUser.setGroupId(imGroup.getId()); |
| | | imGroupUser.setGroupAlias(imGroup.getName()); |
| | | imGroupUser.setSort(4); |
| | | imGroupUser.setUserId(tutoringUserId); |
| | | imGroupUser.setUserPost(PostIdEnum.PO_12.getCode().longValue()); |
| | | |
| | | if (!olduserIdList.contains(tutoringUserId)){ |
| | | imGroupUserList.add(imGroupUser); |
| | | userIdList.add(imGroupUser.getUserId().toString()); |
| | | } |
| | | } |
| | | if (userId != null){ |
| | | ImGroupUser imGroupUser = new ImGroupUser(); |
| | | imGroupUser.setGroupId(imGroup.getId()); |
| | | imGroupUser.setGroupAlias(imGroup.getName()); |
| | | imGroupUser.setSort(5); |
| | | imGroupUser.setUserId(userId); |
| | | |
| | | if (!olduserIdList.contains(userId)){ |
| | | imGroupUserList.add(imGroupUser); |
| | | userIdList.add(imGroupUser.getUserId().toString()); |
| | | } |
| | | } |
| | | this.imGroupUserService.saveBatch(imGroupUserList); |
| | | if (imGroup1 == null){ |
| | | //调用群聊 |
| | | this.imServerApi.groupCreate(imGroup.getId().toString(),imGroup.getName(), ArrayUtil.toArray(userIdList,String.class)); |
| | | }else { |
| | | // //调用群聊 |
| | | // this.imServerApi.groupUpdate(imGroup.getId().toString(),imGroup.getName(), ArrayUtil.toArray(userIdList,String.class)); |
| | | if (CollectionUtil.isNotEmpty(userIdList)){ |
| | | //添加入群 |
| | | this.imServerApi.groupJoin(imGroup.getId().toString(),imGroup.getName(), ArrayUtil.toArray(userIdList,String.class)); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | if (imGroup.getGroupType().intValue() == 1){ |
| | | Map<String,String> buinessmap = new HashMap<>(); |
| | | buinessmap.put("buinessName","心理咨询课程"); |
| | | // 推送消息内容 |
| | | String pushContent = "我购买了心理咨询课程,需要咨询"; |
| | | // IM推送数据json |
| | | ImPushDataDTO pushData = ImPushDataDTO.builder() |
| | | .type(ImPushTypeEnum.S_TO_W_TIP_COURSE_PAY_GROUP_SUCCESS.getCode()) |
| | | .objId(ObjUtil.toString(orderId)) |
| | | .title("通知") |
| | | .content(pushContent) |
| | | .extra(JSONObject.toJSONString(buinessmap)) |
| | | .build(); |
| | | // 发送咨询 |
| | | imBizService.messageSendGroup(userId+"", new String[]{imGroup.getId()+""}, pushData); |
| | | } else if (imGroup.getGroupType().intValue() == 2) { |
| | | Map<String,String> buinessmap = new HashMap<>(); |
| | | buinessmap.put("buinessName","心理咨询疗程"); |
| | | // 推送消息内容 |
| | | String pushContent = "我购买了心理咨询疗程,需要咨询"; |
| | | // IM推送数据json |
| | | ImPushDataDTO pushData = ImPushDataDTO.builder() |
| | | .type(ImPushTypeEnum.S_TO_W_TIP_CONSULT_PAY_GROUP_SUCCESS.getCode()) |
| | | .objId(ObjUtil.toString(orderId)) |
| | | .title("通知") |
| | | .content(pushContent) |
| | | .extra(JSONObject.toJSONString(buinessmap)) |
| | | .build(); |
| | | // 发送咨询 |
| | | imBizService.messageSendGroup(userId+"", new String[]{imGroup.getId()+""}, pushData); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public List<ImGroup> getMyGroup(Long userId, String groupName, Integer statusFlag, String nickName, Integer groupType, String orderId) { |
| | | return this.baseMapper.getMyGroup(userId, groupName, statusFlag, nickName, groupType, orderId); |
| | | } |
| | | |
| | | @Override |
| | | public List<ImGroupUserDto> groupUser(Long groupId) { |
| | | return this.baseMapper.groupUser(groupId); |
| | | } |
| | | |
| | | @Override |
| | | public void updateGroupUserForOrderinfo(Long userId, Integer groupType, Long customerId) { |
| | | if (groupType != null ){ |
| | | //群类型:1课程,2咨询 |
| | | if (groupType.intValue() == 1){ |
| | | List<CourseOrder> courseOrderList = this.courseOrderService.list(new LambdaQueryWrapper<CourseOrder>().eq(CourseOrder::getUserId,customerId) |
| | | .eq(CourseOrder::getStatusFlag,1).eq(CourseOrder::getIsDelete,0).ne(CourseOrder::getCourseUserId,userId)); |
| | | if (CollectionUtil.isNotEmpty(courseOrderList)){ |
| | | courseOrderList.stream().forEach(courseOrder -> { |
| | | courseOrder.setCourseUserId(userId); |
| | | ImGroup imGroup = this.baseMapper.selectOne(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,courseOrder.getId()) |
| | | .eq(ImGroup::getGroupType,groupType).eq(ImGroup::getStatusFlag,1)); |
| | | if (imGroup != null){ |
| | | //退出老顾问 |
| | | ImGroupUser imGroupUserOld = this.imGroupUserService.getOne(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getGroupId,imGroup.getId()) |
| | | .eq(ImGroupUser::getUserPost,PostIdEnum.PO_11.getCode().longValue()).last(" limit 1 ").eq(ImGroupUser::getIsDelete,0) |
| | | .ne(ImGroupUser::getUserId,userId)); |
| | | if (imGroupUserOld != null){ |
| | | this.imGroupUserService.update(new LambdaUpdateWrapper<ImGroupUser>().set(ImGroupUser::getIsDelete,1).eq(ImGroupUser::getId,imGroupUserOld.getId())); |
| | | this.imServerApi.groupQuit(imGroup.getId()+"",new String[]{imGroupUserOld.getUserId()+""}); |
| | | //邀请进入新群 |
| | | ImGroupUser imGroupUser = new ImGroupUser(); |
| | | imGroupUser.setGroupId(imGroup.getId()); |
| | | imGroupUser.setGroupAlias(imGroup.getName()); |
| | | imGroupUser.setSort(3); |
| | | imGroupUser.setUserId(userId); |
| | | imGroupUser.setUserPost(PostIdEnum.PO_11.getCode().longValue()); |
| | | this.imGroupUserService.save(imGroupUser); |
| | | this.imServerApi.groupJoin(imGroup.getId()+"",imGroup.getName(),new String[]{imGroupUser.getUserId()+""}); |
| | | |
| | | } |
| | | |
| | | } |
| | | this.courseOrderService.updateById(courseOrder); |
| | | |
| | | }); |
| | | } |
| | | |
| | | }else if (groupType.intValue() == 2){ |
| | | //修改使用的订单咨询顾问 |
| | | List<CounsellingOrder> counsellingOrderList = this.counsellingOrderService.list(new LambdaQueryWrapper<CounsellingOrder>().eq(CounsellingOrder::getUserId,customerId) |
| | | .eq(CounsellingOrder::getStatusFlag,1).eq(CounsellingOrder::getIsDelete,0).ne(CounsellingOrder::getConsultantUserId,userId)); |
| | | if (CollectionUtil.isNotEmpty(counsellingOrderList)){ |
| | | counsellingOrderList.stream().forEach(counsellingOrder -> { |
| | | counsellingOrder.setConsultantUserId(userId); |
| | | ImGroup imGroup = this.baseMapper.selectOne(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId()) |
| | | .eq(ImGroup::getGroupType,groupType).eq(ImGroup::getStatusFlag,1).eq(ImGroup::getCreateUser,counsellingOrder.getUserId())); |
| | | if (imGroup != null){ |
| | | //退出老顾问 |
| | | ImGroupUser imGroupUserOld = this.imGroupUserService.getOne(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getGroupId,imGroup.getId()) |
| | | .eq(ImGroupUser::getUserPost,PostIdEnum.PO_21.getCode().longValue()).last(" limit 1 ").eq(ImGroupUser::getIsDelete,0) |
| | | .ne(ImGroupUser::getUserId,userId)); |
| | | if (imGroupUserOld != null){ |
| | | this.imGroupUserService.update(new LambdaUpdateWrapper<ImGroupUser>().set(ImGroupUser::getIsDelete,1).eq(ImGroupUser::getId,imGroupUserOld.getId())); |
| | | this.imServerApi.groupQuit(imGroup.getId()+"",new String[]{imGroupUserOld.getUserId()+""}); |
| | | //邀请进入新群 |
| | | ImGroupUser imGroupUser = new ImGroupUser(); |
| | | imGroupUser.setGroupId(imGroup.getId()); |
| | | imGroupUser.setGroupAlias(imGroup.getName()); |
| | | imGroupUser.setSort(0); |
| | | imGroupUser.setUserId(userId); |
| | | imGroupUser.setUserPost(PostIdEnum.PO_21.getCode().longValue()); |
| | | this.imGroupUserService.save(imGroupUser); |
| | | this.imServerApi.groupJoin(imGroup.getId()+"",imGroup.getName(),new String[]{imGroupUser.getUserId()+""}); |
| | | |
| | | } |
| | | } |
| | | this.counsellingOrderService.updateById(counsellingOrder); |
| | | //修改咨询师的咨询顾问 |
| | | CounsellingUser counsellingUser = this.counsellingUserService.getOne(new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getUserId,customerId) |
| | | .eq(CounsellingUser::getCounsellingInfoId,counsellingOrder.getCounsellingInfoId()).eq(CounsellingUser::getIsDelete,0) |
| | | .last(" limit 1")); |
| | | if (counsellingUser != null){ |
| | | counsellingUser.setConsultantUserId(userId); |
| | | this.counsellingUserService.updateById(counsellingUser); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | List<Long> userIds = new ArrayList<>(); |
| | | userIds.add(200L); |
| | | System.out.println(userIds.contains(200L)); |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImGroupUser; |
| | | import cn.stylefeng.guns.modular.business.mapper.ImGroupUserMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IImGroupUserService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息群用户 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class ImGroupUserServiceImpl extends ServiceImpl<ImGroupUserMapper, ImGroupUser> implements IImGroupUserService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImNotice; |
| | | import cn.stylefeng.guns.modular.business.mapper.ImNoticeMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IImNoticeService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 消息通知 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class ImNoticeServiceImpl extends ServiceImpl<ImNoticeMapper, ImNotice> implements IImNoticeService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.ImUserStatus; |
| | | import cn.stylefeng.guns.modular.business.mapper.ImUserStatusMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IImUserStatusService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * IM用户在线状态 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-11 |
| | | */ |
| | | @Service |
| | | public class ImUserStatusServiceImpl extends ServiceImpl<ImUserStatusMapper, ImUserStatus> implements IImUserStatusService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisSpecialTimeConfigEdit2Request; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisSpecialTimeConfig; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAppointment; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalAnalysisSpecialTimeConfigMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalAnalysisSpecialTimeConfigService; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalAppointmentService; |
| | | import cn.stylefeng.roses.kernel.rule.enums.MentalAppointmentStatusEnum; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.jetbrains.annotations.Nullable; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析特殊时间配置 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-26 |
| | | */ |
| | | @Service |
| | | public class MentalAnalysisSpecialTimeConfigServiceImpl extends ServiceImpl<MentalAnalysisSpecialTimeConfigMapper, MentalAnalysisSpecialTimeConfig> implements IMentalAnalysisSpecialTimeConfigService { |
| | | |
| | | @Resource |
| | | private IMentalAppointmentService mentalAppointmentService; |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public ResponseData editSpecialTimeConfig(MentalAnalysisSpecialTimeConfigEdit2Request req) { |
| | | List<MentalAnalysisSpecialTimeConfig> batchSpecialTimeConfigList = new ArrayList<>(); |
| | | |
| | | // 转日期格式 |
| | | Date specialDayDate = DateUtil.parseDate(req.getSpecialDay()); |
| | | |
| | | // 判断是设置当天、还是指定时间段 |
| | | if (req.getSpecialTimeConfigList() == null || req.getSpecialTimeConfigList().size() == 0) { |
| | | // 获取当天预约(服务中) |
| | | Long inServiceMentalAppointmentCount = mentalAppointmentService.count( |
| | | Wrappers.<MentalAppointment>lambdaQuery() |
| | | .eq(MentalAppointment::getWorkerId, req.getCounsellingInfoId()) |
| | | .eq(MentalAppointment::getAppointmentDay, req.getSpecialDay()) |
| | | .eq(MentalAppointment::getStatusFlag, MentalAppointmentStatusEnum.IN_SERVICE.getCode()) |
| | | ); |
| | | if (inServiceMentalAppointmentCount > 0) { |
| | | return new ErrorResponseData("500", "当天有预约服务中,设置特殊时段失败!"); |
| | | } |
| | | |
| | | // 获取当天预约(待服务) |
| | | List<MentalAppointment> todayMentalAppointmentList = mentalAppointmentService.list( |
| | | Wrappers.<MentalAppointment>lambdaQuery() |
| | | .eq(MentalAppointment::getWorkerId, req.getCounsellingInfoId()) |
| | | .eq(MentalAppointment::getAppointmentDay, req.getSpecialDay()) |
| | | .eq(MentalAppointment::getStatusFlag, MentalAppointmentStatusEnum.WAIT_SERVICE.getCode()) |
| | | ); |
| | | // 预约单新分配性格分析师 |
| | | ResponseData x = updateMentalAppointmentNewWorkerOperation(todayMentalAppointmentList); |
| | | if (x != null) { |
| | | return x; |
| | | } |
| | | |
| | | // 设置当天 |
| | | MentalAnalysisSpecialTimeConfig o = BeanUtil.toBean(req, MentalAnalysisSpecialTimeConfig.class); |
| | | o.setIsCancelDay(1); |
| | | o.setCounsellingInfoId(req.getCounsellingInfoId()); |
| | | o.setSpecialDay(specialDayDate); |
| | | batchSpecialTimeConfigList.add(o); |
| | | } else { |
| | | // 特殊时间段,是否未覆盖预约时间 |
| | | List<MentalAppointment> todayMentalAppointmentList = mentalAppointmentService.list( |
| | | Wrappers.<MentalAppointment>lambdaQuery() |
| | | .eq(MentalAppointment::getWorkerId, req.getCounsellingInfoId()) |
| | | .eq(MentalAppointment::getAppointmentDay, req.getSpecialDay()) |
| | | .in(MentalAppointment::getStatusFlag, Arrays.asList( |
| | | MentalAppointmentStatusEnum.WAIT_SERVICE.getCode(), |
| | | MentalAppointmentStatusEnum.IN_SERVICE.getCode() |
| | | )) |
| | | .and(wand -> |
| | | req.getSpecialTimeConfigList().forEach(st -> { |
| | | wand.or(wor -> wor.ne(MentalAppointment::getBeginTimePoint, st.getSpecialBeginTimePoint()) |
| | | .ne(MentalAppointment::getEndTimePoint, st.getSpecialEndTimePoint())); |
| | | }) |
| | | ) |
| | | ); |
| | | // 服务中存在,未覆盖,提示失败 |
| | | Boolean inServicePresent = todayMentalAppointmentList.stream().filter(tma -> MentalAppointmentStatusEnum.IN_SERVICE.getCode().equals(tma.getStatusFlag())).findAny().isPresent(); |
| | | if (inServicePresent) { |
| | | return new ErrorResponseData("500", "有预约服务中,设置特殊时段失败!"); |
| | | } |
| | | |
| | | // 预约单新分配性格分析师 |
| | | ResponseData x = updateMentalAppointmentNewWorkerOperation(todayMentalAppointmentList); |
| | | if (x != null) { |
| | | return x; |
| | | } |
| | | |
| | | // 设置时间段特殊时间 |
| | | for (MentalAnalysisSpecialTimeConfigEdit2Request.SpecialTimeConfig t : req.getSpecialTimeConfigList()) { |
| | | MentalAnalysisSpecialTimeConfig o = BeanUtil.toBean(t, MentalAnalysisSpecialTimeConfig.class); |
| | | o.setCounsellingInfoId(req.getCounsellingInfoId()); |
| | | o.setSpecialDay(specialDayDate); |
| | | batchSpecialTimeConfigList.add(o); |
| | | } |
| | | } |
| | | |
| | | // 清除当天的设置 |
| | | this.remove( |
| | | Wrappers.<MentalAnalysisSpecialTimeConfig>lambdaQuery() |
| | | .eq(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId, req.getCounsellingInfoId()) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getSpecialDay, req.getSpecialDay()) |
| | | ); |
| | | |
| | | if (CollUtil.isNotEmpty(batchSpecialTimeConfigList)) { |
| | | this.saveOrUpdateBatch(batchSpecialTimeConfigList); |
| | | } |
| | | return new SuccessResponseData(); |
| | | } |
| | | |
| | | /** |
| | | * 预约单新分配性格分析师 |
| | | * @param todayMentalAppointmentList |
| | | * @return |
| | | */ |
| | | @Nullable |
| | | private ResponseData updateMentalAppointmentNewWorkerOperation(List<MentalAppointment> todayMentalAppointmentList) { |
| | | if (CollUtil.isNotEmpty(todayMentalAppointmentList)) { |
| | | // 修改待服务的预约性格分析师 |
| | | List<MentalAppointment> waitUpdateMentalAppointmentList = new ArrayList<>(); |
| | | for (MentalAppointment o : todayMentalAppointmentList) { |
| | | MentalAppointment newMa = new MentalAppointment(); |
| | | newMa.setId(o.getId()); |
| | | |
| | | // 预约时间匹配性格分析师 |
| | | Long workerId = mentalAppointmentService.assignMentalAppointmentWorkerId(o.getAppointmentDay(), o.getBeginTimePoint(), o.getEndTimePoint()); |
| | | if (workerId == null) { |
| | | return new ErrorResponseData("500", "新分配性格分析师失败!"); |
| | | } |
| | | |
| | | // 分配新的性格分析师 |
| | | newMa.setWorkerId(workerId); |
| | | waitUpdateMentalAppointmentList.add(newMa); |
| | | } |
| | | if (CollUtil.isNotEmpty(waitUpdateMentalAppointmentList)) { |
| | | mentalAppointmentService.updateBatchById(waitUpdateMentalAppointmentList); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.collection.ListUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalAnalysisTimeConfigPageDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisTimeConfigAddUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalAnalysisTimeConfigMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalAnalysisTimeConfigService; |
| | | import cn.stylefeng.guns.utils.GeneralUtil; |
| | | import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析时间配置 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-26 |
| | | */ |
| | | @Service |
| | | public class MentalAnalysisTimeConfigServiceImpl extends ServiceImpl<MentalAnalysisTimeConfigMapper, MentalAnalysisTimeConfig> implements IMentalAnalysisTimeConfigService { |
| | | |
| | | @Override |
| | | public Page<MentalAnalysisTimeConfigPageDTO> getWorkerPage(Page<Object> page, String nickName) { |
| | | return this.baseMapper.getWorkerPage(page, nickName); |
| | | } |
| | | |
| | | @Override |
| | | public void addTimeConfig(MentalAnalysisTimeConfigAddUpdateRequest req) { |
| | | // for (MentalAnalysisTimeConfigAddUpdateRequest.TimeConfigRequest tc : req.getTimeConfigList()) { |
| | | // MentalAnalysisTimeConfig o = BeanUtil.toBean(tc, MentalAnalysisTimeConfig.class); |
| | | // o.setCounsellingInfoId(req.getCounsellingInfoId()); |
| | | // this.save(o); |
| | | // } |
| | | // 删除时间配置重新生成 |
| | | this.remove(new LambdaQueryWrapper<MentalAnalysisTimeConfig>().eq(MentalAnalysisTimeConfig::getCounsellingInfoId, req.getCounsellingInfoId())); |
| | | // 处理预约时间配置 |
| | | if (CollectionUtil.isNotEmpty(req.getTimeConfigDTOList()) ){ |
| | | List<MentalAnalysisTimeConfig> counsellingTimeConfigs = new ArrayList<>(); |
| | | req.getTimeConfigDTOList().forEach(timeConfigDTO -> { |
| | | // 模块编号 |
| | | String moduleNo = GeneralUtil.generateModuleNo(); |
| | | // 星期几 |
| | | List<String> weekList = ListUtil.toList(timeConfigDTO.getWeeks().split(",")); |
| | | // 时间点 |
| | | List<String> timePointList = ListUtil.toList(timeConfigDTO.getTimePoints().split(",")); |
| | | weekList.stream().forEach(week -> { |
| | | timePointList.forEach(timePoint -> { |
| | | MentalAnalysisTimeConfig obj = new MentalAnalysisTimeConfig(); |
| | | obj.setModuleNo(moduleNo); |
| | | obj.setWeekDay(Integer.parseInt(week)); |
| | | obj.setCounsellingInfoId(req.getCounsellingInfoId()); |
| | | obj.setBeginTimePoint(timePoint.split("-")[0]); |
| | | obj.setEndTimePoint(timePoint.split("-")[1]); |
| | | counsellingTimeConfigs.add(obj); |
| | | }); |
| | | }); |
| | | }); |
| | | |
| | | if (CollectionUtil.isNotEmpty(counsellingTimeConfigs)){ |
| | | this.saveBatch(counsellingTimeConfigs); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void editTimeConfig(MentalAnalysisTimeConfigAddUpdateRequest req) { |
| | | // for (MentalAnalysisTimeConfigAddUpdateRequest.TimeConfigRequest tc : req.getTimeConfigList()) { |
| | | // MentalAnalysisTimeConfig o = BeanUtil.toBean(tc, MentalAnalysisTimeConfig.class); |
| | | // o.setCounsellingInfoId(req.getCounsellingInfoId()); |
| | | // this.saveOrUpdate(o); |
| | | // } |
| | | } |
| | | |
| | | @Override |
| | | public List<MentalAnalysisTimeConfig> getWorkerListByAppointmentTime(Integer mentalAnalysisStatus, Integer weekDay, String appointmentDay, String beginTimePoint, String endTimePoint) { |
| | | return this.baseMapper.getWorkerListByAppointmentTime(mentalAnalysisStatus, weekDay, appointmentDay, beginTimePoint, endTimePoint); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.collection.ListUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisTimeAddUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTime; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalAnalysisTimeMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalAnalysisTimeService; |
| | | import cn.stylefeng.guns.utils.GeneralUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析可预约时间 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-27 |
| | | */ |
| | | @Service |
| | | public class MentalAnalysisTimeServiceImpl extends ServiceImpl<MentalAnalysisTimeMapper, MentalAnalysisTime> implements IMentalAnalysisTimeService { |
| | | |
| | | @Override |
| | | public void updateTime(MentalAnalysisTimeAddUpdateRequest req) { |
| | | // 删除时间配置重新生成 |
| | | this.remove(new LambdaQueryWrapper<>()); |
| | | // 处理预约时间配置 |
| | | if (CollectionUtil.isNotEmpty(req.getTimeConfigDTOList()) ){ |
| | | List<MentalAnalysisTime> counsellingTimes = new ArrayList<>(); |
| | | req.getTimeConfigDTOList().forEach(timeConfigDTO -> { |
| | | // 模块编号 |
| | | String moduleNo = GeneralUtil.generateModuleNo(); |
| | | // 星期几 |
| | | List<String> weekList = ListUtil.toList(timeConfigDTO.getWeeks().split(",")); |
| | | // 时间点 |
| | | List<String> timePointList = ListUtil.toList(timeConfigDTO.getTimePoints().split(",")); |
| | | weekList.stream().forEach(week -> { |
| | | timePointList.forEach(timePoint -> { |
| | | MentalAnalysisTime obj = new MentalAnalysisTime(); |
| | | obj.setModuleNo(moduleNo); |
| | | obj.setWeekDay(Integer.parseInt(week)); |
| | | obj.setBeginTimePoint(timePoint.split("-")[0]); |
| | | obj.setEndTimePoint(timePoint.split("-")[1]); |
| | | counsellingTimes.add(obj); |
| | | }); |
| | | }); |
| | | }); |
| | | |
| | | if (CollectionUtil.isNotEmpty(counsellingTimes)){ |
| | | this.saveBatch(counsellingTimes); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DatePattern; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.BooleanUtil; |
| | | import cn.hutool.http.HttpUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalAppointmentPageDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyMentalAppointmentDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.UserMentalAppointmentPageResponseDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisSpecialTimeConfig; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalAppointment; |
| | | import cn.stylefeng.guns.modular.business.entity.OrderConsultOne; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalAppointmentMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalAnalysisSpecialTimeConfigService; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalAnalysisTimeConfigService; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalAppointmentService; |
| | | import cn.stylefeng.guns.modular.business.service.IOrderConsultOneService; |
| | | import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; |
| | | import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; |
| | | import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService; |
| | | import cn.stylefeng.roses.kernel.rule.enums.*; |
| | | import com.baomidou.mybatisplus.core.toolkit.Assert; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * 性格分析预约 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class MentalAppointmentServiceImpl extends ServiceImpl<MentalAppointmentMapper, MentalAppointment> implements IMentalAppointmentService { |
| | | |
| | | @Value("${refund.alipay-url}") |
| | | private String refundAlipayUrl; |
| | | @Value("${refund.wxpay-url}") |
| | | private String refundWxpayUrl; |
| | | |
| | | @Resource |
| | | private CustomerService customerService; |
| | | |
| | | @Resource |
| | | private IMentalAppointmentService mentalAppointmentService; |
| | | |
| | | @Resource |
| | | private IMentalAnalysisTimeConfigService mentalAnalysisTimeConfigService; |
| | | |
| | | @Resource |
| | | private IMentalAnalysisSpecialTimeConfigService mentalAnalysisSpecialTimeConfigService; |
| | | |
| | | @Resource |
| | | private IOrderConsultOneService orderConsultOneService; |
| | | |
| | | @Override |
| | | public List<MentalTestMyMentalAppointmentDTO> myMentalAppointment(Long userId, String consultantName, List<Integer> statusFlagList) { |
| | | return this.baseMapper.myMentalAppointment(userId, consultantName, statusFlagList); |
| | | } |
| | | |
| | | @Override |
| | | public Page<UserMentalAppointmentPageResponseDTO> userMentalAppointmentPage(Page<Object> page, Long userId, String name, String telephone, Integer statusFlag) { |
| | | return this.baseMapper.userMentalAppointmentPage(page, userId, name, telephone, statusFlag); |
| | | } |
| | | |
| | | @Override |
| | | public Page<MentalAppointmentPageDTO> getPage(Page<Object> page, Long counsellingInfoId, String workerNickName, String userNickName, String userTelephone, Integer statusFlag, List<Integer> statusFlagList) { |
| | | return this.baseMapper.mentalAnalysisTimeConfigSchedule(page, null, null, counsellingInfoId, workerNickName, userNickName, userTelephone, statusFlag, statusFlagList); |
| | | } |
| | | |
| | | @Override |
| | | public List<MentalAppointmentPageDTO> mentalAnalysisTimeConfigSchedule(String searchBeginTime, String searchEndTime, Long counsellingInfoId, String workerNickName, String userNickName, String userTelephone, Integer statusFlag, List<Integer> statusFlagList) { |
| | | return this.baseMapper.mentalAnalysisTimeConfigSchedule(searchBeginTime, searchEndTime, counsellingInfoId, workerNickName, userNickName, userTelephone, statusFlag, statusFlagList); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean mentalAppointmentCancel(Long id) { |
| | | // 获取当前登录用户信息 |
| | | LoginUser loginUser = LoginContext.me().getLoginUser(); |
| | | Long userId = loginUser.getUserId(); |
| | | |
| | | // 性格分析预约 |
| | | MentalAppointment mentalAppointment = this.getById(id); |
| | | Assert.isTrue(userId.equals(mentalAppointment.getUserId()), "预约用户信息错误"); |
| | | |
| | | // 服务中可取消 |
| | | if (mentalAppointment != null |
| | | && MentalAppointmentStatusEnum.WAIT_SERVICE.getCode().equals(mentalAppointment.getStatusFlag())) { |
| | | // 1V1咨询订单信息 |
| | | OrderConsultOne orderConsultOne = orderConsultOneService.getOne( |
| | | Wrappers.<OrderConsultOne>lambdaQuery() |
| | | .eq(OrderConsultOne::getMentalAppointmentId, id) |
| | | .gt(OrderConsultOne::getPayAmount, 0) |
| | | .isNotNull(OrderConsultOne::getPayType) |
| | | ); |
| | | |
| | | boolean update = orderConsultOneService.update( |
| | | Wrappers.<OrderConsultOne>lambdaUpdate() |
| | | .set(OrderConsultOne::getStatusFlag, OrderStatusFlagEnum.CANCEL.getCode()) |
| | | .set(OrderConsultOne::getRefundAmount, orderConsultOne.getPayAmount()) |
| | | .set(OrderConsultOne::getRefundTime, new Date()) |
| | | .set(OrderConsultOne::getCancelTime, new Date()) |
| | | .set(OrderConsultOne::getCancelRemark, "申请取消") |
| | | .eq(OrderConsultOne::getId, orderConsultOne.getId()) |
| | | .eq(OrderConsultOne::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode()) |
| | | ); |
| | | if (update) { |
| | | this.update( |
| | | Wrappers.<MentalAppointment>lambdaUpdate() |
| | | .set(MentalAppointment::getStatusFlag, MentalAppointmentStatusEnum.CANCEL.getCode()) |
| | | .eq(MentalAppointment::getId, mentalAppointment.getId()) |
| | | ); |
| | | } |
| | | Assert.isTrue(update, "订单取消失败"); |
| | | |
| | | Boolean isRefund = true; |
| | | if (PayTypeEnum.ALIPAY.getCode().toString().equals(orderConsultOne.getPayType())) { |
| | | Map<String, Object> map = new HashMap(2); |
| | | map.put("outTradeNo", orderConsultOne.getOrderNo()); |
| | | map.put("tradeNo", orderConsultOne.getTransactionNo()); |
| | | String result = HttpUtil.createGet(refundAlipayUrl).form(map).execute().body(); |
| | | log.info("1v1咨询订单退款支付宝:{},{},{}", orderConsultOne.getOrderNo(), orderConsultOne.getTransactionNo(), result); |
| | | isRefund = BooleanUtil.toBoolean(result); |
| | | } else if (PayTypeEnum.WXPAY.getCode().toString().equals(orderConsultOne.getPayType())) { |
| | | // TODO: 1v1咨询订单退款微信 |
| | | String result = ""; |
| | | log.info("1v1咨询订单退款微信:{},{},{}", orderConsultOne.getOrderNo(), orderConsultOne.getTransactionNo(), result); |
| | | isRefund = BooleanUtil.toBoolean(result); |
| | | } |
| | | Assert.isTrue(isRefund, "退款失败"); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public Long assignMentalAppointmentWorkerId(Date appointmentDay, String beginTimePoint, String endTimePoint) { |
| | | // 预约时间日期 |
| | | String appointmentDayYmd = DateUtil.format(appointmentDay, DatePattern.NORM_DATE_PATTERN); |
| | | |
| | | // 获取预约时段有服务的分析师(不可预约) |
| | | List<MentalAppointment> sameTimeAppointmentList = mentalAppointmentService.list( |
| | | Wrappers.<MentalAppointment>lambdaQuery() |
| | | .eq(MentalAppointment::getAppointmentDay, appointmentDayYmd) |
| | | .eq(MentalAppointment::getBeginTimePoint, beginTimePoint) |
| | | .eq(MentalAppointment::getEndTimePoint, endTimePoint) |
| | | .in(MentalAppointment::getStatusFlag, Arrays.asList( |
| | | MentalAppointmentStatusEnum.WAIT_SERVICE.getCode(), |
| | | MentalAppointmentStatusEnum.IN_SERVICE.getCode() |
| | | )) |
| | | .isNotNull(MentalAppointment::getWorkerId) |
| | | ); |
| | | List<Long> neWorkerIdList = sameTimeAppointmentList.stream().map(MentalAppointment::getWorkerId).collect(Collectors.toList()); |
| | | |
| | | // 查询特殊时间段,取消当天的分析师(不可预约) |
| | | List<Long> isCancelDaySpecialTimeConfigList = mentalAnalysisSpecialTimeConfigService.listObjs( |
| | | Wrappers.<MentalAnalysisSpecialTimeConfig>lambdaQuery() |
| | | .select(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getSpecialDay, appointmentDayYmd) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getIsCancelDay, 1) |
| | | , obj -> { |
| | | Long counsellingInfoId = (Long) obj; |
| | | return counsellingInfoId; |
| | | } |
| | | ); |
| | | neWorkerIdList.addAll(isCancelDaySpecialTimeConfigList); |
| | | neWorkerIdList.stream().distinct(); |
| | | |
| | | // 获取当前星期 |
| | | Integer weekDay = DateUtil.dayOfWeekEnum(appointmentDay).getIso8601Value(); |
| | | // 预约时间段配置匹配的性格分析师 |
| | | List<MentalAnalysisTimeConfig> eqWorkerTimeConfigList = mentalAnalysisTimeConfigService.getWorkerListByAppointmentTime(1, weekDay, appointmentDayYmd, beginTimePoint, endTimePoint); |
| | | // 分析师ID(预约时间段配置匹配) |
| | | List<Long> eqWorkerIdByTimeConfigList = eqWorkerTimeConfigList.isEmpty() ? Collections.singletonList(0L) : |
| | | eqWorkerTimeConfigList.stream() |
| | | .map(MentalAnalysisTimeConfig::getCounsellingInfoId) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 查询有特殊时间段配置,分析师(可预约) |
| | | List<MentalAnalysisSpecialTimeConfig> specialTimeConfigList = mentalAnalysisSpecialTimeConfigService.list( |
| | | Wrappers.<MentalAnalysisSpecialTimeConfig>lambdaQuery() |
| | | .in(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId, eqWorkerIdByTimeConfigList) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getSpecialDay, appointmentDayYmd) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getIsCancelDay, 0) |
| | | ); |
| | | |
| | | // 根据预约时间段、特殊时间段(优先)判断是否符合预约时间 |
| | | List<Long> eqWorkerIdList = eqWorkerTimeConfigList.stream() |
| | | .filter(wtc -> { |
| | | // 特殊时间段(优先),存在判断是否符合时间段,不存在直接过 |
| | | boolean isPresentSpecialTimeConfig = specialTimeConfigList.stream().filter(stc -> stc.getCounsellingInfoId().equals(wtc.getCounsellingInfoId())).findFirst().isPresent(); |
| | | if (isPresentSpecialTimeConfig) { |
| | | // 如果存在特殊时间段,判断是否有匹配预约时间段的特殊时段设置,未设置(不可预约) |
| | | return specialTimeConfigList.stream().filter(stc -> stc.getSpecialBeginTimePoint().equals(beginTimePoint) |
| | | && stc.getSpecialEndTimePoint().equals(endTimePoint) |
| | | ) |
| | | .findFirst() |
| | | .isPresent(); |
| | | } else { |
| | | return true; |
| | | } |
| | | }) |
| | | .map(MentalAnalysisTimeConfig::getCounsellingInfoId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 特殊时间段符合的分析师(可预约) |
| | | List<MentalAnalysisSpecialTimeConfig> specialTimePointList = mentalAnalysisSpecialTimeConfigService.list( |
| | | Wrappers.<MentalAnalysisSpecialTimeConfig>lambdaQuery() |
| | | .select(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getSpecialDay, appointmentDayYmd) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getSpecialBeginTimePoint, beginTimePoint) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getSpecialEndTimePoint, endTimePoint) |
| | | .eq(MentalAnalysisSpecialTimeConfig::getIsCancelDay, 0) |
| | | ); |
| | | // 特殊时间段符合的分析师ID |
| | | List<Long> specialTimePointWorkerIdList = specialTimePointList.stream().map(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId).collect(Collectors.toList()); |
| | | // 特殊时间段的补充 |
| | | eqWorkerIdList.addAll(specialTimePointWorkerIdList); |
| | | |
| | | if (CollUtil.isEmpty(eqWorkerIdList)) { |
| | | // 没有分配 |
| | | eqWorkerIdList = Collections.singletonList(0L); |
| | | } else { |
| | | // 去重 |
| | | eqWorkerIdList.stream().distinct(); |
| | | } |
| | | |
| | | // 分配性格分析师 |
| | | Long consultWorkerId = customerService.randomWorkerIdByLineStatusAndPostNeWorkerId(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_31.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode(), eqWorkerIdList, neWorkerIdList); |
| | | if (consultWorkerId == null) { |
| | | consultWorkerId = customerService.randomWorkerIdByLineStatusAndPostNeWorkerId(null, null, PostIdEnum.PO_31.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode(), eqWorkerIdList, neWorkerIdList); |
| | | } |
| | | |
| | | return consultWorkerId; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestClass; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalTestClassMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestClassService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试分类 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class MentalTestClassServiceImpl extends ServiceImpl<MentalTestClassMapper, MentalTestClass> implements IMentalTestClassService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestOption; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalTestOptionMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestOptionService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试选项 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class MentalTestOptionServiceImpl extends ServiceImpl<MentalTestOptionMapper, MentalTestOption> implements IMentalTestOptionService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalTestQuestionMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestQuestionService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试问题 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class MentalTestQuestionServiceImpl extends ServiceImpl<MentalTestQuestionMapper, MentalTestQuestion> implements IMentalTestQuestionService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestOrderDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestRecordPageDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestRecord; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalTestRecordMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestRecordService; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试记录 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-09 |
| | | */ |
| | | @Service |
| | | public class MentalTestRecordServiceImpl extends ServiceImpl<MentalTestRecordMapper, MentalTestRecord> implements IMentalTestRecordService { |
| | | |
| | | @Override |
| | | public List<MentalTestMyTestTopicDTO> myTestTopic(Long userId, Long topicId) { |
| | | return this.baseMapper.myTestTopic(userId, topicId); |
| | | } |
| | | @Override |
| | | public List<MentalTestMyTestTopicDTO> myTestRecordTopicByMentalAppointmentId(Long mentalAppointmentId, List<Long> mentalAppointmentIdList) { |
| | | return this.baseMapper.myTestRecordTopicByMentalAppointmentId(mentalAppointmentId, mentalAppointmentIdList); |
| | | } |
| | | |
| | | @Override |
| | | public List<MentalTestMyTestOrderDTO> myTestOrder(Long userId, Long topicId) { |
| | | return this.baseMapper.myTestOrder(userId, topicId); |
| | | } |
| | | |
| | | @Override |
| | | public Long getConsultWorkerIdByRecord(Long mentalTestRecordId, Long userId) { |
| | | // 咨询性格分析师 |
| | | Long consultWorkerId = null; |
| | | if (mentalTestRecordId != null) { |
| | | // 从性格测试结果获取,性格分析师ID |
| | | MentalTestRecord mentalTestRecord = this.getById(mentalTestRecordId); |
| | | consultWorkerId = mentalTestRecord.getConsultWorkerId(); |
| | | } |
| | | |
| | | if (consultWorkerId == null && userId != null) { |
| | | // 从其他记录中获取 |
| | | consultWorkerId = this.getObj( |
| | | Wrappers.<MentalTestRecord>lambdaQuery() |
| | | .select(MentalTestRecord::getConsultWorkerId) |
| | | .eq(MentalTestRecord::getUserId, userId) |
| | | .isNotNull(MentalTestRecord::getConsultWorkerId) |
| | | .last("limit 1"), |
| | | l -> (Long) l |
| | | ); |
| | | |
| | | if (consultWorkerId != null) { |
| | | // 将性格分析师分配入测试记录 |
| | | this.update( |
| | | Wrappers.<MentalTestRecord>lambdaUpdate() |
| | | .set(MentalTestRecord::getConsultWorkerId, consultWorkerId) |
| | | .eq(MentalTestRecord::getId, mentalTestRecordId) |
| | | ); |
| | | } |
| | | } |
| | | return consultWorkerId; |
| | | } |
| | | |
| | | @Override |
| | | public Page<MentalTestRecordPageDTO> getPage(Page<Object> page, String title, String nickName, String telephone, Integer testType) { |
| | | return this.baseMapper.getPage(page, title, nickName, telephone, testType); |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestResult; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalTestResultMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestResultService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试结果 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-09 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class MentalTestResultServiceImpl extends ServiceImpl<MentalTestResultMapper, MentalTestResult> implements IMentalTestResultService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalTestResultSetMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestResultSetService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试结果配置 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class MentalTestResultSetServiceImpl extends ServiceImpl<MentalTestResultSetMapper, MentalTestResultSet> implements IMentalTestResultSetService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestQuestionOptionDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.MentalTestTopicPageDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.request.MentalTestTopicAddUpdateRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestOption; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import cn.stylefeng.guns.modular.business.mapper.MentalTestTopicMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestOptionService; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestQuestionService; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestResultSetService; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestTopicService; |
| | | import cn.stylefeng.roses.kernel.rule.enums.DeleteEnum; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试题库 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class MentalTestTopicServiceImpl extends ServiceImpl<MentalTestTopicMapper, MentalTestTopic> implements IMentalTestTopicService { |
| | | |
| | | @Resource |
| | | IMentalTestQuestionService mentalTestQuestionService; |
| | | |
| | | @Resource |
| | | IMentalTestOptionService mentalTestOptionService; |
| | | |
| | | @Resource |
| | | IMentalTestResultSetService mentalTestResultSetService; |
| | | |
| | | @Override |
| | | public Page<MentalTestTopicPageDTO> topicPage(Page page, String classIds, String title, Integer testType, Integer testFlag, Long userId, Integer statusFlag) { |
| | | List<String> classIdList = StrUtil.isNotBlank(classIds) ? Arrays.asList(classIds.split(",")) : null; |
| | | return this.baseMapper.topicPage(page, classIdList, title, testType, testFlag, userId, statusFlag); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void saveTopic(MentalTestTopicAddUpdateRequest req) { |
| | | // 保存题库信息 |
| | | MentalTestTopic topic = BeanUtil.toBean(req, MentalTestTopic.class); |
| | | this.save(topic); |
| | | Long topicId = topic.getId(); |
| | | |
| | | for (MentalTestTopicAddUpdateRequest.QuestionRequest qu : req.getQuestionList()) { |
| | | // 保存问题 |
| | | MentalTestQuestion question = BeanUtil.toBean(qu, MentalTestQuestion.class); |
| | | question.setTopicId(topicId); |
| | | mentalTestQuestionService.save(question); |
| | | Long questionId = question.getId(); |
| | | |
| | | // 保存问题选项 |
| | | for (MentalTestTopicAddUpdateRequest.QuestionRequest.OptionRequest op : qu.getOptionList()) { |
| | | MentalTestOption option = BeanUtil.toBean(op, MentalTestOption.class); |
| | | option.setTopicId(topicId); |
| | | option.setQuestionId(questionId); |
| | | mentalTestOptionService.save(option); |
| | | } |
| | | } |
| | | |
| | | // 保存结果区间配置 |
| | | for (MentalTestTopicAddUpdateRequest.ResultSetRequest rs : req.getResultSetList()) { |
| | | MentalTestResultSet resultSet = BeanUtil.toBean(rs, MentalTestResultSet.class); |
| | | resultSet.setTopicId(topicId); |
| | | resultSet.setResultCalculateMode(req.getResultCalculateMode()); |
| | | mentalTestResultSetService.save(resultSet); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void editTopic(MentalTestTopicAddUpdateRequest req) { |
| | | // 保存题库信息 |
| | | MentalTestTopic topic = BeanUtil.toBean(req, MentalTestTopic.class); |
| | | this.saveOrUpdate(topic); |
| | | Long topicId = topic.getId(); |
| | | |
| | | // 清空问题、问题选项 |
| | | mentalTestQuestionService.remove( |
| | | Wrappers.<MentalTestQuestion>lambdaQuery() |
| | | .eq(MentalTestQuestion::getTopicId, topicId) |
| | | ); |
| | | mentalTestOptionService.remove( |
| | | Wrappers.<MentalTestOption>lambdaQuery() |
| | | .eq(MentalTestOption::getTopicId, topicId) |
| | | ); |
| | | for (MentalTestTopicAddUpdateRequest.QuestionRequest qu : req.getQuestionList()) { |
| | | // 保存问题 |
| | | MentalTestQuestion question = BeanUtil.toBean(qu, MentalTestQuestion.class); |
| | | question.setTopicId(topicId); |
| | | mentalTestQuestionService.saveOrUpdate(question); |
| | | Long questionId = question.getId(); |
| | | |
| | | // 保存问题选项 |
| | | for (MentalTestTopicAddUpdateRequest.QuestionRequest.OptionRequest op : qu.getOptionList()) { |
| | | MentalTestOption option = BeanUtil.toBean(op, MentalTestOption.class); |
| | | option.setTopicId(topicId); |
| | | option.setQuestionId(questionId); |
| | | mentalTestOptionService.saveOrUpdate(option); |
| | | } |
| | | } |
| | | |
| | | // 清空结果区间配置 |
| | | mentalTestResultSetService.remove( |
| | | Wrappers.<MentalTestResultSet>lambdaQuery() |
| | | .eq(MentalTestResultSet::getTopicId, topicId) |
| | | ); |
| | | // 保存结果区间配置 |
| | | for (MentalTestTopicAddUpdateRequest.ResultSetRequest rs : req.getResultSetList()) { |
| | | MentalTestResultSet resultSet = BeanUtil.toBean(rs, MentalTestResultSet.class); |
| | | resultSet.setTopicId(topicId); |
| | | resultSet.setResultCalculateMode(req.getResultCalculateMode()); |
| | | mentalTestResultSetService.saveOrUpdate(resultSet); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<MentalTestQuestionOptionDTO> getQuestionOptionByTopicId(Long topicId) { |
| | | // 心理测试问题 |
| | | List<MentalTestQuestion> questionList = mentalTestQuestionService.list( |
| | | Wrappers.<MentalTestQuestion>lambdaQuery() |
| | | .eq(MentalTestQuestion::getTopicId, topicId) |
| | | .eq(MentalTestQuestion::getIsDelete, DeleteEnum.NOT_DELETE.getCode()) |
| | | ); |
| | | // 心理测试问题选项 |
| | | List<MentalTestOption> optionList = mentalTestOptionService.list( |
| | | Wrappers.<MentalTestOption>lambdaQuery() |
| | | .eq(MentalTestOption::getTopicId, topicId) |
| | | .eq(MentalTestOption::getIsDelete, DeleteEnum.NOT_DELETE.getCode()) |
| | | ); |
| | | // 封装问题、选项信息 |
| | | List<MentalTestQuestionOptionDTO> dtoList = questionList.stream() |
| | | .map(o -> { |
| | | MentalTestQuestionOptionDTO questionDto = BeanUtil.toBean(o, MentalTestQuestionOptionDTO.class); |
| | | List<MentalTestOption> options = optionList.stream() |
| | | .filter(op -> op.getQuestionId().equals(o.getId())) |
| | | .collect(Collectors.toList()); |
| | | questionDto.setOptionList(options); |
| | | return questionDto; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | return dtoList; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.guns.modular.business.entity.OrderConsultOne; |
| | | import cn.stylefeng.guns.modular.business.mapper.OrderConsultOneMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IOrderConsultOneService; |
| | | import cn.stylefeng.roses.kernel.rule.enums.OrderStatusFlagEnum; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理咨询1V1订单 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class OrderConsultOneServiceImpl extends ServiceImpl<OrderConsultOneMapper, OrderConsultOne> implements IOrderConsultOneService { |
| | | |
| | | @Override |
| | | public OrderConsultOne getOrderByNo(String orderNo) { |
| | | return this.getOne( |
| | | Wrappers.<OrderConsultOne>lambdaQuery() |
| | | .eq(OrderConsultOne::getOrderNo, orderNo) |
| | | .last("limit 1") |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getStatOrderList(String dateFormat, String beginTime, String endTime, Long workerId, List<Integer> statusList) { |
| | | return this.baseMapper.getStatOrderList(dateFormat, beginTime, endTime, workerId, statusList); |
| | | } |
| | | |
| | | @Override |
| | | public boolean getIsPayOrderConsultOne(Long orderConsultOneId, String mentalTestOrderNo) { |
| | | // 查询支付成功的1v1咨询订单 |
| | | long payOrderConsultOneCount = 0; |
| | | |
| | | if (orderConsultOneId != null) { |
| | | payOrderConsultOneCount = this.count( |
| | | Wrappers.<OrderConsultOne>lambdaQuery() |
| | | .eq(OrderConsultOne::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode()) |
| | | //.gt(OrderConsultOne::getPayAmount, 0) |
| | | .eq(OrderConsultOne::getId, orderConsultOneId) |
| | | ); |
| | | } |
| | | |
| | | if (StrUtil.isNotEmpty(mentalTestOrderNo)) { |
| | | payOrderConsultOneCount = this.count( |
| | | Wrappers.<OrderConsultOne>lambdaQuery() |
| | | .eq(OrderConsultOne::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode()) |
| | | //.gt(OrderConsultOne::getPayAmount, 0) |
| | | .eq(OrderConsultOne::getMentalTestOrderNo, mentalTestOrderNo) |
| | | ); |
| | | } |
| | | |
| | | // 是否支付1v1咨询订单 |
| | | return payOrderConsultOneCount > 0; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.lang.Assert; |
| | | import cn.stylefeng.guns.modular.business.dto.OrderMentalTestDetailDTO; |
| | | import cn.stylefeng.guns.modular.business.dto.OrderMentalTestPageDTO; |
| | | import cn.stylefeng.guns.modular.business.entity.MentalTestTopic; |
| | | import cn.stylefeng.guns.modular.business.entity.OrderMentalTest; |
| | | import cn.stylefeng.guns.modular.business.mapper.OrderMentalTestMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IMentalTestTopicService; |
| | | import cn.stylefeng.guns.modular.business.service.IOrderMentalTestService; |
| | | import cn.stylefeng.guns.utils.GeneralUtil; |
| | | import cn.stylefeng.roses.kernel.rule.enums.OrderStatusFlagEnum; |
| | | import cn.stylefeng.roses.kernel.rule.enums.OrderTypeEnum; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理测试订单 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class OrderMentalTestServiceImpl extends ServiceImpl<OrderMentalTestMapper, OrderMentalTest> implements IOrderMentalTestService { |
| | | |
| | | @Resource |
| | | IMentalTestTopicService mentalTestTopicService; |
| | | |
| | | @Override |
| | | public OrderMentalTest getOrderByNo(String orderNo) { |
| | | return this.getOne( |
| | | Wrappers.<OrderMentalTest>lambdaQuery() |
| | | .eq(OrderMentalTest::getOrderNo, orderNo) |
| | | .last("limit 1") |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean paySuccess(String orderNo, String tradeNo, String totalAmount, Integer payType) { |
| | | // 获取订单信息 |
| | | OrderMentalTest order = getOrderByNo(orderNo); |
| | | Assert.notNull(order, "订单不存在"); |
| | | Assert.isTrue(order.getPayAmount().compareTo(new BigDecimal(totalAmount)) == 0, "订单支付金额错误!"); |
| | | |
| | | boolean update = this.update( |
| | | Wrappers.<OrderMentalTest>lambdaUpdate() |
| | | .set(OrderMentalTest::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode()) |
| | | .set(OrderMentalTest::getPayType, payType) |
| | | .set(OrderMentalTest::getTransactionNo, tradeNo) |
| | | .eq(OrderMentalTest::getOrderNo, orderNo) |
| | | ); |
| | | return update; |
| | | } |
| | | |
| | | @Override |
| | | public Page<OrderMentalTestPageDTO> getPage(Page<Object> page, String title, String nickName, String telephone, Integer testType, Integer statusFlag, Integer adminView) { |
| | | return this.baseMapper.getPage(page, title, nickName, telephone, testType, statusFlag, adminView); |
| | | } |
| | | |
| | | @Override |
| | | public OrderMentalTestDetailDTO getInfoById(Long id) { |
| | | return this.baseMapper.getInfoById(id); |
| | | } |
| | | |
| | | @Override |
| | | public OrderMentalTest createOrderMentalTest(Long userId, Long topicId, Boolean isNeedPay, Boolean isBack) { |
| | | // 题库信息 |
| | | MentalTestTopic topic = mentalTestTopicService.getById(topicId); |
| | | Assert.notNull(topic, "题库不存在"); |
| | | |
| | | // 获取用户最近创建的待支付订单 |
| | | OrderMentalTest o = this.baseMapper.selectOne( |
| | | Wrappers.<OrderMentalTest>lambdaQuery() |
| | | .eq(OrderMentalTest::getUserId, userId) |
| | | .eq(OrderMentalTest::getGoodsId, topicId) |
| | | .eq(OrderMentalTest::getStatusFlag, OrderStatusFlagEnum.WAIT_PAY.getCode()) |
| | | .orderByDesc(OrderMentalTest::getCreateTime) |
| | | .last("LIMIT 1") |
| | | ); |
| | | if (o == null) { |
| | | // 下单 |
| | | o = OrderMentalTest.builder() |
| | | .orderNo(GeneralUtil.generateOrderNo(OrderTypeEnum.MENTAL_TEST)) |
| | | .userId(userId) |
| | | .goodsId(topicId) |
| | | .statusFlag(OrderStatusFlagEnum.WAIT_PAY.getCode()) |
| | | .payAmount(topic.getTestAmount()) |
| | | .orderAmount(topic.getTestAmount()) |
| | | .build(); |
| | | } |
| | | |
| | | // 测试类型:0免费,1付费 |
| | | if (topic.getTestType() == 1) { |
| | | if (isNeedPay == null || isNeedPay) { |
| | | // 获取用户已经支付过的题库 |
| | | long count = this.count( |
| | | Wrappers.<OrderMentalTest>lambdaQuery() |
| | | .eq(OrderMentalTest::getUserId, userId) |
| | | .eq(OrderMentalTest::getGoodsId, topicId) |
| | | .eq(OrderMentalTest::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode()) |
| | | ); |
| | | if (count > 0) { |
| | | // 已支付过的标记无须支付 |
| | | isNeedPay = false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 题库免费 或 题库无须支付 |
| | | if (!isNeedPay || topic.getTestType() == 0) { |
| | | o.setStatusFlag(OrderStatusFlagEnum.PAY_SUCCESS.getCode()); |
| | | if (!isBack) { |
| | | // 后台添加的需统计 |
| | | o.setPayAmount(BigDecimal.ZERO); |
| | | o.setOrderAmount(BigDecimal.ZERO); |
| | | } |
| | | } |
| | | |
| | | // 保存订单信息 |
| | | o.setIsBack(isBack); |
| | | this.saveOrUpdate(o); |
| | | return o; |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getStatOrderList(String dateFormat, String beginTime, String endTime, Long workerId, List<Integer> statusList) { |
| | | return this.baseMapper.getStatOrderList(dateFormat, beginTime, endTime, workerId, statusList); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.PsychologicalColumn; |
| | | import cn.stylefeng.guns.modular.business.mapper.PsychologicalColumnMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IPsychologicalColumnService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理专栏管理 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class PsychologicalColumnServiceImpl extends ServiceImpl<PsychologicalColumnMapper, PsychologicalColumn> implements IPsychologicalColumnService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.PsychologicalRead; |
| | | import cn.stylefeng.guns.modular.business.mapper.PsychologicalReadMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IPsychologicalReadService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 心理专栏阅读记录 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class PsychologicalReadServiceImpl extends ServiceImpl<PsychologicalReadMapper, PsychologicalRead> implements IPsychologicalReadService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.StoreAppointment; |
| | | import cn.stylefeng.guns.modular.business.mapper.StoreAppointmentMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IStoreAppointmentService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 门店预约 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class StoreAppointmentServiceImpl extends ServiceImpl<StoreAppointmentMapper, StoreAppointment> implements IStoreAppointmentService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdByIdRequest; |
| | | import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdRequest; |
| | | import cn.stylefeng.guns.modular.business.service.ISysUserBusinessService; |
| | | import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; |
| | | import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; |
| | | import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService; |
| | | import cn.stylefeng.roses.kernel.rule.enums.DeleteEnum; |
| | | import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; |
| | | import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; |
| | | import cn.stylefeng.roses.kernel.sms.modular.service.SysSmsInfoService; |
| | | import cn.stylefeng.roses.kernel.system.api.expander.SystemConfigExpander; |
| | | import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest; |
| | | import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser; |
| | | import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserMapper; |
| | | import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | @Service |
| | | public class SysUserBusinessServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserBusinessService { |
| | | |
| | | @Resource |
| | | private SysSmsInfoService sysSmsInfoService; |
| | | @Resource |
| | | private SysUserService sysUserService; |
| | | @Resource |
| | | private CustomerService customerService; |
| | | @Resource |
| | | private PasswordStoredEncryptApi passwordStoredEncryptApi; |
| | | |
| | | @Override |
| | | public ResponseData resetPwd(SysUserResetPwdRequest req) { |
| | | // 验证码通过 |
| | | sysSmsInfoService.validateSmsInfo(req); |
| | | |
| | | SysUser sysUser = sysUserService.getOne( |
| | | Wrappers.<SysUser>lambdaQuery() |
| | | .and(w -> w.eq(SysUser::getAccount, req.getPhone()) |
| | | .or().eq(SysUser::getPhone, req.getPhone()) |
| | | ) |
| | | .eq(SysUser::getStatusFlag, StatusEnum.ENABLE.getCode()) |
| | | .eq(SysUser::getDelFlag, DeleteEnum.NOT_DELETE.getCode()) |
| | | .last("LIMIT 1") |
| | | ); |
| | | if (sysUser == null || (!req.getPhone().equals(sysUser.getAccount()) && !req.getPhone().equals(sysUser.getPhone()))) { |
| | | return new ErrorResponseData<>("手机号验证错误"); |
| | | } |
| | | |
| | | SysUserRequest sysUserRequest = BeanUtil.toBean(req, SysUserRequest.class); |
| | | return resetPwdOption(sysUserRequest, sysUser); |
| | | } |
| | | |
| | | @Override |
| | | public ResponseData resetPwdById(SysUserResetPwdByIdRequest req) { |
| | | SysUser sysUser = sysUserService.getById(req.getUserId()); |
| | | SysUserRequest sysUserRequest = BeanUtil.toBean(req, SysUserRequest.class); |
| | | return resetPwdOption(sysUserRequest, sysUser); |
| | | } |
| | | public ResponseData resetPwdOption(SysUserRequest sysUserRequest, SysUser sysUser) { |
| | | sysUserRequest.setUserId(sysUser.getUserId()); |
| | | sysUserService.resetPassword(sysUserRequest); |
| | | |
| | | // C端用户更新 |
| | | Customer user = customerService.getOne(Wrappers.<Customer>lambdaQuery().eq(Customer::getSysUserId, sysUserRequest.getUserId()).last("LIMIT 1")); |
| | | Customer customer = new Customer(); |
| | | customer.setCustomerId(user.getCustomerId()); |
| | | customer.setAccount(user.getAccount()); |
| | | |
| | | String password = sysUserRequest.getNewPassword(); |
| | | if (StrUtil.isBlank(password)) { |
| | | if (customer.getAccount().length() >= 6) { |
| | | // 密码设置为手机号后六位 |
| | | password = StrUtil.sub(customer.getAccount(), -6, customer.getAccount().length()); |
| | | } else { |
| | | // 默认密码 |
| | | password = SystemConfigExpander.getDefaultPassWord(); |
| | | } |
| | | } |
| | | customer.setPassword(passwordStoredEncryptApi.encrypt(password)); |
| | | customerService.updateCustomerRemoveCache(customer); |
| | | return new SuccessResponseData<>(); |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.SystemSet; |
| | | import cn.stylefeng.guns.modular.business.mapper.SystemSetMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ISystemSetService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统配置(H5、客服电话) 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author goupan |
| | | * @since 2024-01-01 |
| | | */ |
| | | @Service |
| | | public class SystemSetServiceImpl extends ServiceImpl<SystemSetMapper, SystemSet> implements ISystemSetService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.dto.request.TotalRequest; |
| | | import cn.stylefeng.guns.modular.business.mapper.TotalReportMapper; |
| | | import cn.stylefeng.guns.modular.business.service.ITotalReportService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Service |
| | | public class TotalReportServiceImpl implements ITotalReportService { |
| | | |
| | | @Autowired |
| | | private TotalReportMapper totalReportMapper; |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> courseTotalData(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.courseTotalData(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> mentalTestTotalData(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.mentalTestTotalData(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> orderConsultOneTotalData(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.orderConsultOneTotalData(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> counsellingTotalData(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.counsellingTotalData(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> courseNameTotalData(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.courseNameTotalData(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> courseTagTotalData(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.courseTagTotalData(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public long courseBuyTotal(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.courseBuyTotal(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> counsellingOrderTypeTotalData(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.counsellingOrderTypeTotalData(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> counsellingTypeTotalData(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.counsellingTypeTotalData(totalRequest); |
| | | } |
| | | |
| | | @Override |
| | | public long counsellingBuyTotal(TotalRequest totalRequest) { |
| | | return this.totalReportMapper.counsellingBuyTotal(totalRequest); |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.modular.business.service.impl; |
| | | |
| | | import cn.stylefeng.guns.modular.business.entity.UserEvaluate; |
| | | import cn.stylefeng.guns.modular.business.mapper.UserEvaluateMapper; |
| | | import cn.stylefeng.guns.modular.business.service.IUserEvaluateService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * 用户评价表 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author guohongjin |
| | | * @since 2024-01-02 |
| | | */ |
| | | @Service |
| | | public class UserEvaluateServiceImpl extends ServiceImpl<UserEvaluateMapper, UserEvaluate> implements IUserEvaluateService { |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.utils; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | |
| | | import javax.crypto.Cipher; |
| | | import javax.crypto.SecretKey; |
| | | import javax.crypto.spec.SecretKeySpec; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.math.BigDecimal; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.security.Key; |
| | | import java.security.Security; |
| | | import java.text.NumberFormat; |
| | | import java.util.*; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | |
| | | public class CrmebUtil { |
| | | |
| | | public static String encryptPassword(String pwd, String key) throws Exception { |
| | | try { |
| | | Security.addProvider(new com.sun.crypto.provider.SunJCE()); |
| | | Key _key = getDESSercretKey(key); |
| | | Cipher cipher = Cipher.getInstance("DES"); |
| | | cipher.init(Cipher.ENCRYPT_MODE, _key); |
| | | byte[] data = pwd.getBytes(StandardCharsets.UTF_8); |
| | | byte[] result = cipher.doFinal(data); |
| | | return new sun.misc.BASE64Encoder().encode(result); |
| | | }catch (Exception e){ |
| | | throw new Exception("密码处理异常"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 解密密码 |
| | | */ |
| | | public static String decryptPassowrd(String pwd, String key) |
| | | throws Exception { |
| | | Security.addProvider(new com.sun.crypto.provider.SunJCE()); |
| | | Key aKey = getDESSercretKey(key); |
| | | Cipher cipher = Cipher.getInstance("DES"); |
| | | cipher.init(Cipher.DECRYPT_MODE, aKey); |
| | | |
| | | byte[] data = new sun.misc.BASE64Decoder().decodeBuffer(pwd); |
| | | byte[] result = cipher.doFinal(data); |
| | | |
| | | return new String(result, StandardCharsets.UTF_8); |
| | | } |
| | | |
| | | /** |
| | | * 获得DES加密秘钥 |
| | | * @param key |
| | | * @return |
| | | * @throws UnsupportedEncodingException |
| | | */ |
| | | public static SecretKey getDESSercretKey(String key) throws UnsupportedEncodingException { |
| | | byte[] result = new byte[8]; |
| | | byte[] keys = null; |
| | | keys = key.getBytes(StandardCharsets.UTF_8); |
| | | for(int i = 0; i<8;i++){ |
| | | if(i < keys.length){ |
| | | result[i] = keys[i]; |
| | | }else{ |
| | | result[i] = 0x01; |
| | | } |
| | | } |
| | | return new SecretKeySpec(result, "DES"); |
| | | } |
| | | |
| | | /** |
| | | * 对象转map |
| | | * @param object 对象 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-14 |
| | | * @return Map |
| | | */ |
| | | public static Map objectToMap(Object object){ |
| | | return JSONObject.parseObject(JSONObject.toJSONString(object), Map.class); |
| | | } |
| | | |
| | | public static Map StringToMap(String strValue){ |
| | | return JSONObject.parseObject(strValue, HashMap.class); |
| | | } |
| | | |
| | | /** |
| | | * map转对象 |
| | | * @param map map |
| | | * @param clz 对象 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-14 |
| | | * @return Map |
| | | */ |
| | | public static <T> T mapToObj(HashMap<String,Object> map, Class<T> clz){ |
| | | if (map == null) return null; |
| | | return JSONObject.parseObject(JSONObject.toJSONString(map), clz); |
| | | } |
| | | |
| | | /** |
| | | * map转对象 |
| | | * @param map map |
| | | * @param clz 对象 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-14 |
| | | * @return Map |
| | | */ |
| | | public static <T> T mapStringToObj(HashMap<String,String> map, Class<T> clz){ |
| | | if (map == null) return null; |
| | | return JSONObject.parseObject(JSONObject.toJSONString(map), clz); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 密码工具 |
| | | * @param args String[] 字符串数组 |
| | | */ |
| | | public static void main(String[] args) throws Exception { |
| | | // System.out.println(encryptPassword("123456", "admin")); |
| | | System.out.println(decryptPassowrd("Rb/KmlSjAxI=", "demo")); |
| | | } |
| | | |
| | | /** |
| | | * map合并 |
| | | * @param map 对象 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-14 |
| | | * @return Object |
| | | */ |
| | | public static Map<String, Object> mergeMap(Map<String, Object> map, Map<String, Object> map1){ |
| | | HashMap<String, Object> map2 = new HashMap<>(); |
| | | map2.putAll(map); |
| | | map2.putAll(map1); |
| | | return map2; |
| | | } |
| | | |
| | | /** |
| | | * 字符串分割,转化为数组 |
| | | * @param str 字符串 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<Integer> |
| | | */ |
| | | public static List<Integer> stringToArray(String str){ |
| | | return stringToArrayByRegex(str, ","); |
| | | } |
| | | |
| | | /** |
| | | * 字符串分割,转化为数组 |
| | | * @param str 字符串 |
| | | * @param regex 分隔符有 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<Integer> |
| | | */ |
| | | public static List<Integer> stringToArrayByRegex(String str, String regex ){ |
| | | List<Integer> list = new ArrayList<>(); |
| | | if (str.contains(regex)){ |
| | | |
| | | String[] split = str.split(regex); |
| | | |
| | | for (String value : split) { |
| | | if(!StrUtil.isBlank(value)){ |
| | | list.add(Integer.parseInt(value.trim())); |
| | | } |
| | | } |
| | | }else { |
| | | list.add(Integer.parseInt(str)); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 字符串分割,转化为数组 |
| | | * @param str 字符串 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<String> |
| | | */ |
| | | public static List<String> stringToArrayStr(String str){ |
| | | return stringToArrayStrRegex(str, ","); |
| | | } |
| | | |
| | | /** |
| | | * 数字字符数据转int格式数据 |
| | | * @param str 待转换的数字字符串 |
| | | * @return int数组 |
| | | */ |
| | | public static List<Integer> stringToArrayInt(String str){ |
| | | List<String> strings = stringToArrayStrRegex(str, ","); |
| | | List<Integer> ids = new ArrayList<>(); |
| | | for (String string : strings) { |
| | | ids.add(Integer.parseInt(string.trim())); |
| | | } |
| | | return ids; |
| | | } |
| | | |
| | | /** |
| | | * 字符串分割,转化为数组 |
| | | * @param str 字符串 |
| | | * @param regex 分隔符有 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<String> |
| | | */ |
| | | public static List<String> stringToArrayStrRegex(String str, String regex ){ |
| | | List<String> list = new ArrayList<>(); |
| | | if (str.contains(regex)){ |
| | | |
| | | String[] split = str.split(regex); |
| | | |
| | | for (String value : split) { |
| | | if(!StrUtil.isBlank(value)){ |
| | | list.add(value); |
| | | } |
| | | } |
| | | }else { |
| | | list.add(str); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 字符串分割,转化为数组 |
| | | * @param str 字符串 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<Object> |
| | | */ |
| | | public static List<Object> stringToArrayObject(String str){ |
| | | return stringToArrayObjectRegex(str, ","); |
| | | } |
| | | |
| | | /** |
| | | * 字符串分割,转化为数组 |
| | | * @param str 字符串 |
| | | * @param regex 分隔符有 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<Object> |
| | | */ |
| | | public static List<Object> stringToArrayObjectRegex(String str, String regex ){ |
| | | List<Object> list = new ArrayList<>(); |
| | | if (str.contains(regex)){ |
| | | |
| | | String[] split = str.split(regex); |
| | | |
| | | for (String value : split) { |
| | | if(!StrUtil.isBlank(value)){ |
| | | list.add(value); |
| | | } |
| | | } |
| | | }else { |
| | | list.add(str); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * json字符串转数组 |
| | | * @param str 字符串 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<String> |
| | | */ |
| | | public static List<String> jsonToListString(String str){ |
| | | try{ |
| | | return JSONObject.parseArray(str).toJavaList(String.class); |
| | | }catch (Exception e){ |
| | | ArrayList<String> list = new ArrayList<>(); |
| | | list.add(str); |
| | | return list; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * json字符串转数组 |
| | | * @param str 字符串 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<Integer> |
| | | */ |
| | | public static List<Integer> jsonToListInteger(String str){ |
| | | try{ |
| | | return JSONObject.parseArray(str).toJavaList(Integer.class); |
| | | }catch (Exception e){ |
| | | ArrayList<Integer> list = new ArrayList<>(); |
| | | list.add(Integer.parseInt(str)); |
| | | return list; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * json字符串转数组 |
| | | * @param str 字符串 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<Integer> |
| | | */ |
| | | public static List<Object> jsonToListObject(String str){ |
| | | try{ |
| | | return JSONObject.parseArray(str).toJavaList(Object.class); |
| | | }catch (Exception e){ |
| | | ArrayList<Object> list = new ArrayList<>(); |
| | | list.add(str); |
| | | return list; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * json字符串转数组 |
| | | * @param str 字符串 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return List<T> |
| | | */ |
| | | public static <T> List<T> jsonToListClass(String str, Class<T> cls){ |
| | | try{ |
| | | return JSONObject.parseArray(str, cls); |
| | | }catch (Exception e){ |
| | | return new ArrayList<>(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 去掉域名 https / http / www 信息 |
| | | * @param domain 域名 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return String |
| | | */ |
| | | public static String getCleanLowerDomain(String domain){ |
| | | domain = domain.toLowerCase(); |
| | | domain = domain.replaceAll("http://", ""); |
| | | domain = domain.replaceAll("https://", ""); |
| | | domain = domain.replaceAll("www.", ""); |
| | | domain = domain.replaceAll("/", ""); |
| | | return domain; |
| | | } |
| | | |
| | | /** |
| | | * 获取根域名 |
| | | * @param domain 域名 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return String |
| | | */ |
| | | public static String getBaseLowerDomain(String domain){ |
| | | if(!domain.contains(".")){ |
| | | domain += ".com"; |
| | | } |
| | | domain = getCleanLowerDomain(domain); |
| | | String[] split = domain.split("\\."); |
| | | int len = split.length; |
| | | if(len == 0){ |
| | | return domain; |
| | | } |
| | | return split[len - 2] + "." + split[len - 1]; |
| | | } |
| | | |
| | | /** |
| | | * 获取客户端ip |
| | | * @param request 参数 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return String |
| | | */ |
| | | public static String getClientIp(HttpServletRequest request){ |
| | | String ip = request.getHeader("X-Forwarded-For"); |
| | | if(checkIsIp(ip)){ |
| | | return ip; |
| | | } |
| | | |
| | | ip = request.getHeader("X-Real-IP"); |
| | | if(checkIsIp(ip)){ |
| | | return ip; |
| | | } |
| | | |
| | | ip = request.getRemoteAddr(); |
| | | if(ip.equals("0:0:0:0:0:0:0:1")){ |
| | | //本地 localhost访问 ipv6 |
| | | ip = "127.0.0.1"; |
| | | } |
| | | if(checkIsIp(ip)){ |
| | | return ip; |
| | | } |
| | | |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 检测是否为ip |
| | | * @param ip 参数 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return String |
| | | */ |
| | | public static boolean checkIsIp(String ip){ |
| | | if(StrUtil.isBlank(ip)){ |
| | | return false; |
| | | } |
| | | |
| | | if(ip.equals("unKnown")){ |
| | | return false; |
| | | } |
| | | |
| | | if(ip.equals("unknown")){ |
| | | return false; |
| | | } |
| | | |
| | | return ip.split("\\.").length == 4; |
| | | } |
| | | |
| | | /** |
| | | * 获取fin_in_set拼装sql |
| | | * @param field String 字段 |
| | | * @param value Integer 值 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return String |
| | | */ |
| | | public static String getFindInSetSql(String field, Integer value ){ |
| | | return "find_in_set(" + value +", " + field + ")"; |
| | | } |
| | | |
| | | /** |
| | | * 获取fin_in_set拼装sql |
| | | * @param field String 字段 |
| | | * @param list ArrayList<Integer> 值 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return String |
| | | */ |
| | | public static String getFindInSetSql(String field, ArrayList<Integer> list ){ |
| | | ArrayList<String> sqlList = new ArrayList<>(); |
| | | for (Integer value: list) { |
| | | sqlList.add(getFindInSetSql(field, value)); |
| | | } |
| | | return "( " + StrUtil.join(" or ",sqlList) + ")"; |
| | | } |
| | | |
| | | /** |
| | | * 获取fin_in_set拼装sql |
| | | * @param field String 字段 |
| | | * @param idStr String 多个值,逗号分割 |
| | | * @author Mr.Zhang |
| | | * @since 2020-04-22 |
| | | * @return String |
| | | */ |
| | | public static String getFindInSetSql(String field, String idStr ){ |
| | | List<Integer> list = stringToArray(idStr); |
| | | ArrayList<String> sqlList = new ArrayList<>(); |
| | | for (Integer value: list) { |
| | | sqlList.add(getFindInSetSql(field, value)); |
| | | } |
| | | return "( " + StrUtil.join( " or ",sqlList) + ")"; |
| | | } |
| | | |
| | | /** |
| | | * 通过id获取分类名称 |
| | | * @param list 分类集合 |
| | | * @param categoryIdStr id字符串 |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-06 |
| | | * @ |
| | | */ |
| | | public static String getValueByIndex(HashMap<Integer, String> list, String categoryIdStr){ |
| | | if(list.size() < 1 || StrUtil.isBlank(categoryIdStr)){ |
| | | return ""; |
| | | } |
| | | ArrayList<String> name = new ArrayList<>(); |
| | | List<Integer> idList = CrmebUtil.stringToArray(categoryIdStr); |
| | | |
| | | String str = ""; |
| | | for (Integer id : idList) { |
| | | str = getStrValueByIndex(list, id); |
| | | if(!StrUtil.isBlank(str)){ |
| | | name.add(getStrValueByIndex(list, id)); |
| | | } |
| | | } |
| | | if(name.size() < 1){ |
| | | return ""; |
| | | } |
| | | return StrUtil.join(",",name); |
| | | } |
| | | |
| | | /** |
| | | * 通过id获取分类名称 |
| | | * @param list 分类集合 |
| | | * @param key id |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-06 |
| | | * @ |
| | | */ |
| | | public static String getStrValueByIndex(HashMap<Integer, String> list, Integer key){ |
| | | if(list.size() < 1){ |
| | | return ""; |
| | | } |
| | | return list.getOrDefault(key, ""); |
| | | } |
| | | |
| | | /** |
| | | * 通过id获取分类名称 |
| | | * @param list 分类集合 |
| | | * @param key id |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-06 |
| | | * @ |
| | | */ |
| | | public static Integer getIntValueByIndex(HashMap<Integer, Integer> list, Integer key){ |
| | | if(null == list ||list.size() < 1){ |
| | | return 0; |
| | | } |
| | | return list.getOrDefault(key, 0); |
| | | } |
| | | |
| | | /** |
| | | * 获取uuid |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-06 |
| | | * @ |
| | | */ |
| | | public static String getUuid(){ |
| | | return UUID.randomUUID().toString().replace("-", ""); |
| | | } |
| | | |
| | | // /** |
| | | // * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100% |
| | | // * @param i1 当前周期 |
| | | // * @param i2 上一个周期 |
| | | // * @author Mr.Zhang |
| | | // * @since 2020-05-06 |
| | | // * @ |
| | | // */ |
| | | // public static int getRate(Integer i1, Integer i2){ |
| | | // BigDecimal b1 = new BigDecimal(i1); |
| | | // BigDecimal b2 = new BigDecimal(i2); |
| | | // return getRate(b1, b2); |
| | | // } |
| | | |
| | | // /** |
| | | // * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100% |
| | | // * @param b1 当前周期 |
| | | // * @param b2 上一个周期 |
| | | // * @author Mr.Zhang |
| | | // * @since 2020-05-06 |
| | | // * @ |
| | | // */ |
| | | // public static int getRate(BigDecimal b1, BigDecimal b2){ |
| | | // //计算差值 |
| | | // |
| | | // if(b2.equals(b1)){ |
| | | // //数值一样,说明没有增长 |
| | | // return Constants.NUM_ZERO; |
| | | // } |
| | | // |
| | | // if(b2.equals(BigDecimal.ZERO)){ |
| | | // //b2是0 |
| | | // return Constants.NUM_ONE_HUNDRED; |
| | | // } |
| | | // |
| | | // return (b1.subtract(b2)).divide(b2, 2, BigDecimal.ROUND_UP).multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue(); |
| | | // |
| | | // |
| | | //// BigDecimal.setScale();//用于格式化小数点 |
| | | //// setScale(1);//表示保留以为小数,默认用四舍五入方式 |
| | | //// setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3 |
| | | //// setScale(1,BigDecimal.ROUND_UP);//进位处理,2.35变成2.4 |
| | | //// setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4 |
| | | //// setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入,2.35变成2.3,如果是5则向下舍 |
| | | // } |
| | | |
| | | /** |
| | | * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100% |
| | | * @param i1 当前周期 |
| | | * @param i2 上一个周期 |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-06 |
| | | * @ |
| | | */ |
| | | public static BigDecimal getRateBig(Integer i1, Integer i2){ |
| | | BigDecimal b1 = new BigDecimal(i1); |
| | | BigDecimal b2 = new BigDecimal(i2); |
| | | return getRateBig(b1, b2); |
| | | } |
| | | |
| | | /** |
| | | * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100% |
| | | * 如果上个周期为0, = 当前周期 * 100% |
| | | * @param b1 当前周期 |
| | | * @param b2 上一个周期 |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-06 |
| | | * @ |
| | | */ |
| | | public static BigDecimal getRateBig(BigDecimal b1, BigDecimal b2){ |
| | | //计算差值 |
| | | |
| | | if(b2.compareTo(b1) == 0){ |
| | | //数值一样,说明没有增长 |
| | | return BigDecimal.ZERO; |
| | | } |
| | | |
| | | if(b2.compareTo(BigDecimal.ZERO) == 0){ |
| | | //b2是0 |
| | | return b1.setScale(2, BigDecimal.ROUND_UP); |
| | | } |
| | | |
| | | return (b1.subtract(b2)).multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).divide(b2, BigDecimal.ROUND_UP); |
| | | } |
| | | |
| | | /** |
| | | * hash 转换 |
| | | * @param hash final byte[] hash参数 |
| | | * @author Mr.Zhang |
| | | * @since 2020-06-03 |
| | | * @return String |
| | | */ |
| | | public static String byteToHex(final byte[] hash) { |
| | | Formatter formatter = new Formatter(); |
| | | for (byte b : hash) { |
| | | formatter.format("%02x", b); |
| | | } |
| | | String result = formatter.toString(); |
| | | formatter.close(); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * hash 转换 |
| | | * @param base64 String 图片流 |
| | | * @author Mr.Zhang |
| | | * @since 2020-06-03 |
| | | * @return String |
| | | */ |
| | | public static String getBase64Image(String base64) { |
| | | return "data:image/png;base64," + base64; |
| | | } |
| | | |
| | | /** |
| | | * 去掉字符串第一位和最后一位 |
| | | * @param param String 参数 |
| | | * @return String |
| | | */ |
| | | public static String trimSingeQua(String param){ |
| | | return param.substring(1,param.length()-1); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据长度生成随机数字 |
| | | * @param start 起始数字 |
| | | * @param end 结束数字 |
| | | * @return 生成的随机码 |
| | | */ |
| | | public static Integer randomCount(Integer start, Integer end){ |
| | | return (int)(Math.random()*(end - start +1) + start); |
| | | } |
| | | |
| | | /** |
| | | * 订单号生成 |
| | | * @param payType String 支付类型 |
| | | * @return 生成的随机码 |
| | | */ |
| | | public static String getOrderNo(String payType){ |
| | | return payType + randomCount(11111, 99999) + System.currentTimeMillis() + randomCount(11111, 99999); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * map排序 |
| | | * @param map Map<String, Object> 支付类型 |
| | | * @return 生成的随机码 |
| | | */ |
| | | public static Map<String, Object> mapSort(Map<String, Object> map) { |
| | | return new TreeMap<>(map); |
| | | } |
| | | |
| | | /** |
| | | * map排序然后按照url模式拼接 |
| | | * @param map Map<String, Object> 支付类型 |
| | | * @return 生成的随机码 |
| | | */ |
| | | public static String mapToStringUrl(Map<String, Object> map){ |
| | | map = CrmebUtil.mapSort(map); |
| | | StringBuilder sb = new StringBuilder(); // 多线程访问的情况下需要用StringBuffer |
| | | Set es = map.keySet(); // 所有参与传参的key按照accsii排序(升序) |
| | | for (Object set : es) { |
| | | String k = set.toString(); |
| | | Object v = map.get(k); |
| | | sb.append(k).append("=").append(v.toString()).append("&"); |
| | | } |
| | | String str = sb.toString(); |
| | | return str.substring(0, str.length() - 1); |
| | | } |
| | | |
| | | public static BigDecimal getBigDecimalRate(String rate) { |
| | | return new BigDecimal(rate).divide(BigDecimal.TEN.multiply(BigDecimal.TEN)); |
| | | } |
| | | |
| | | /** |
| | | * unicode编码转换为汉字 |
| | | * @param unicodeStr 待转化的编码 |
| | | * @return 返回转化后的汉子 |
| | | */ |
| | | public static String UnicodeToCN(String unicodeStr) { |
| | | Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))"); |
| | | Matcher matcher = pattern.matcher(unicodeStr); |
| | | char ch; |
| | | while (matcher.find()) { |
| | | //group |
| | | String group = matcher.group(2); |
| | | //ch:'李四' |
| | | ch = (char) Integer.parseInt(group, 16); |
| | | //group1 |
| | | String group1 = matcher.group(1); |
| | | unicodeStr = unicodeStr.replace(group1, ch + ""); |
| | | } |
| | | |
| | | return unicodeStr.replace("\\", "").trim(); |
| | | } |
| | | |
| | | /** |
| | | * 汉字转化为Unicode编码 |
| | | * @param CN 待转化的中文 |
| | | * @return 返回转化之后的unicode编码 |
| | | */ |
| | | public static String CNToUnicode(String CN) { |
| | | |
| | | try { |
| | | StringBuffer out = new StringBuffer(""); |
| | | //直接获取字符串的unicode二进制 |
| | | byte[] bytes = CN.getBytes("unicode"); |
| | | //然后将其byte转换成对应的16进制表示即可 |
| | | for (int i = 0; i < bytes.length - 1; i += 2) { |
| | | out.append("\\u"); |
| | | String str = Integer.toHexString(bytes[i + 1] & 0xff); |
| | | for (int j = str.length(); j < 2; j++) { |
| | | out.append("0"); |
| | | } |
| | | String str1 = Integer.toHexString(bytes[i] & 0xff); |
| | | out.append(str1); |
| | | out.append(str); |
| | | } |
| | | return out.toString(); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public static String getSign(Map<String, Object> map, String signKey){ |
| | | String result = CrmebUtil.mapToStringUrl(map) + "&key=" + signKey; |
| | | // return DigestUtils.md5Hex(result).toUpperCase(); |
| | | String sign = SecureUtil.md5(result).toUpperCase(); |
| | | System.out.println("sign ========== " + sign); |
| | | return sign; |
| | | } |
| | | |
| | | /** |
| | | * 检查是否可以转换int |
| | | * @param str |
| | | * @return |
| | | */ |
| | | public static boolean isString2Num(String str){ |
| | | Pattern pattern = Pattern.compile("^[0-9]*$"); |
| | | Matcher matcher = pattern.matcher(str); |
| | | return matcher.matches(); |
| | | } |
| | | |
| | | //数组去重 |
| | | public static List<Integer> arrayUnique(Integer[] arr){ |
| | | List<Integer> list = new ArrayList<>(); |
| | | for (Integer integer : arr) { |
| | | if (!list.contains(integer)) { |
| | | list.add(integer); |
| | | } |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 百分比计算 |
| | | * @param detailTotalNumber 销售量 |
| | | * @param totalNumber 限量库存 |
| | | * @return 百分比 |
| | | */ |
| | | public static String percentInstance(Integer detailTotalNumber, Integer totalNumber) { |
| | | Double bfTotalNumber = Double.valueOf(detailTotalNumber); |
| | | Double zcTotalNumber = Double.valueOf(totalNumber); |
| | | double percent = bfTotalNumber/zcTotalNumber; |
| | | //获取格式化对象 |
| | | NumberFormat nt = NumberFormat.getPercentInstance(); |
| | | //设置百分数精确度2即保留两位小数 |
| | | nt.setMinimumFractionDigits(2); |
| | | return nt.format(percent); |
| | | } |
| | | |
| | | /** |
| | | * 百分比计算 |
| | | * @param detailTotalNumber 销售量 |
| | | * @param totalNumber 限量库存 |
| | | * @return 百分比 |
| | | */ |
| | | public static int percentInstanceIntVal(Integer detailTotalNumber, Integer totalNumber) { |
| | | BigDecimal sales = new BigDecimal(detailTotalNumber); |
| | | BigDecimal total = new BigDecimal(totalNumber); |
| | | int percentage = sales.divide(total, 2, BigDecimal.ROUND_UP).multiply(new BigDecimal(100)).intValue(); |
| | | return Math.min(percentage, 100); |
| | | } |
| | | |
| | | /** |
| | | * 百分比计算 |
| | | * @param detailTotalNumber 销售量 |
| | | * @param totalNumber 限量库存 |
| | | * @return 百分比 |
| | | */ |
| | | public static int percentInstanceIntVal(BigDecimal detailTotalNumber, BigDecimal totalNumber) { |
| | | int percentage = detailTotalNumber.divide(totalNumber, 2, BigDecimal.ROUND_UP).multiply(new BigDecimal(100)).intValue(); |
| | | return Math.min(percentage, 100); |
| | | } |
| | | |
| | | /** |
| | | * Object转List |
| | | */ |
| | | public static <T> List<T> castList(Object obj, Class<T> clazz) { |
| | | List<T> result = new ArrayList<>(); |
| | | if(obj instanceof List<?>) { |
| | | for (Object o : (List<?>) obj) { |
| | | result.add(clazz.cast(o)); |
| | | } |
| | | return result; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static List<JSONObject> jsonArrayToJsonObjectList(JSONArray jsonArray) { |
| | | List<JSONObject> list = CollUtil.newArrayList(); |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | JSONObject arrayJSONObject = jsonArray.getJSONObject(i); |
| | | list.add(arrayJSONObject); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 手机号脱敏处理 |
| | | * @param phone 手机号 |
| | | */ |
| | | public static String maskMobile(String phone) { |
| | | if (StrUtil.isBlank(phone)) { |
| | | return ""; |
| | | } |
| | | return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.utils; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.poi.excel.ExcelUtil; |
| | | import cn.hutool.poi.excel.ExcelWriter; |
| | | import org.apache.poi.ss.usermodel.CellStyle; |
| | | import org.apache.poi.ss.usermodel.Font; |
| | | |
| | | import java.io.File; |
| | | import java.util.HashMap; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 导出工具类 |
| | | * +---------------------------------------------------------------------- |
| | | * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
| | | * +---------------------------------------------------------------------- |
| | | * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. |
| | | * +---------------------------------------------------------------------- |
| | | * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
| | | * +---------------------------------------------------------------------- |
| | | * | Author: CRMEB Team <admin@crmeb.com> |
| | | * +---------------------------------------------------------------------- |
| | | */ |
| | | |
| | | |
| | | public class ExportUtil { |
| | | |
| | | |
| | | //上传类型 |
| | | public static final String DOWNLOAD_TYPE_FILE = "downloadf"; // 文件导出下载拦截关键字 |
| | | public static final String UPLOAD_TYPE_FILE = "uploadf"; // 文件前端上传后下载关键字 |
| | | // public static final String UPLOAD_ROOT_PATH_CONFIG_KEY = "upload_root_path";//上传地址 |
| | | public static final String UPLOAD_MODEL_PATH_EXCEL = "excel";// excel |
| | | /** |
| | | * 导出Excel文件 |
| | | * @param fileName 文件名 |
| | | * @param title 文件标题 |
| | | * @param voList 数据列表 |
| | | * @param aliasMap 别名Map(别名需要与数据列表的数据对应) |
| | | * @return 返回给前端的文件名(路径+文件名) |
| | | */ |
| | | public static String exportExecl(String fileName, String title, List<?> voList, LinkedHashMap<String, String> aliasMap) throws Exception { |
| | | if (StrUtil.isBlank(fileName)) { |
| | | throw new Exception("文件名不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(title)) { |
| | | throw new Exception("标题不能为空"); |
| | | } |
| | | if (CollUtil.isEmpty(voList)) { |
| | | throw new Exception("数据列表不能为空"); |
| | | } |
| | | if (CollUtil.isEmpty(aliasMap)) { |
| | | throw new Exception("别名map不能为空"); |
| | | } |
| | | |
| | | // 文件名部分 |
| | | String newFileName = UploadUtil.getWebPath() + fileName; |
| | | String filePath = UploadUtil.getServerPath(); |
| | | |
| | | // 判断是否存在当前目录,不存在则创建 |
| | | File file = new File(filePath); |
| | | if (!file.exists()) { |
| | | file.mkdirs(); |
| | | } |
| | | fileName = filePath.concat(fileName); |
| | | |
| | | // 通过工具类创建writer |
| | | ExcelWriter writer = ExcelUtil.getWriter(fileName); |
| | | // ExcelWriter writer = ExcelUtil.getWriter("d:/writeMapTest.xlsx"); |
| | | CellStyle headCellStyle = writer.getHeadCellStyle(); |
| | | Font font = writer.createFont(); |
| | | font.setBold(true); |
| | | headCellStyle.setFont(font); |
| | | |
| | | //自定义标题别名 |
| | | aliasMap.forEach((key, value) -> writer.addHeaderAlias(key, value)); |
| | | // 合并单元格后的标题行,使用默认标题样式 |
| | | writer.merge(aliasMap.size() - 1, title); |
| | | writer.merge(aliasMap.size() - 1, StrUtil.format("生成时间:{}", DateUtil.now())); |
| | | //设置宽度自适应 |
| | | writer.setColumnWidth(-1, 22); |
| | | // 一次性写出内容,使用默认样式,强制输出标题 |
| | | writer.write(voList, true); |
| | | // 关闭writer,释放内存 |
| | | writer.close(); |
| | | |
| | | return newFileName; |
| | | } |
| | | |
| | | /** |
| | | * 导出Excel文件 |
| | | * @param fileName 文件名 |
| | | * @param title 文件标题 |
| | | * @param voList 数据列表 |
| | | * @param aliasMap 别名Map(别名需要与数据列表的数据对应) |
| | | * @return 返回给前端的文件名(路径+文件名) |
| | | */ |
| | | public static Map<String,String> exportExeclOss(String fileName, String title, List<?> voList, LinkedHashMap<String, String> aliasMap) throws Exception { |
| | | if (StrUtil.isBlank(fileName)) { |
| | | throw new Exception("文件名不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(title)) { |
| | | throw new Exception("标题不能为空"); |
| | | } |
| | | if (CollUtil.isEmpty(voList)) { |
| | | throw new Exception("数据列表不能为空"); |
| | | } |
| | | if (CollUtil.isEmpty(aliasMap)) { |
| | | throw new Exception("别名map不能为空"); |
| | | } |
| | | |
| | | // 文件名部分 |
| | | String newFileName = UploadUtil.getWebPath() + fileName; |
| | | String filePath = UploadUtil.getServerPath(); |
| | | |
| | | // 判断是否存在当前目录,不存在则创建 |
| | | File file = new File(filePath); |
| | | if (!file.exists()) { |
| | | file.mkdirs(); |
| | | } |
| | | fileName = filePath.concat(fileName); |
| | | |
| | | // 通过工具类创建writer |
| | | ExcelWriter writer = ExcelUtil.getWriter(fileName); |
| | | // ExcelWriter writer = ExcelUtil.getWriter("d:/writeMapTest.xlsx"); |
| | | CellStyle headCellStyle = writer.getHeadCellStyle(); |
| | | Font font = writer.createFont(); |
| | | font.setBold(true); |
| | | headCellStyle.setFont(font); |
| | | |
| | | //自定义标题别名 |
| | | aliasMap.forEach((key, value) -> writer.addHeaderAlias(key, value)); |
| | | // 合并单元格后的标题行,使用默认标题样式 |
| | | writer.merge(aliasMap.size() - 1, title); |
| | | writer.merge(aliasMap.size() - 1, StrUtil.format("生成时间:{}", DateUtil.now())); |
| | | //设置宽度自适应 |
| | | writer.setColumnWidth(-1, 22); |
| | | // 一次性写出内容,使用默认样式,强制输出标题 |
| | | writer.write(voList, true); |
| | | // 关闭writer,释放内存 |
| | | writer.close(); |
| | | Map<String,String> map = new HashMap<>(); |
| | | map.put("fileName",newFileName); |
| | | map.put("filePath",fileName); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 上传部分设置 |
| | | */ |
| | | public static void setUpload( String modelPath, String type) { |
| | | |
| | | UploadUtil.setModelPath("guns/"+UPLOAD_TYPE_FILE+"/"+modelPath); |
| | | UploadUtil.setType(type); |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.utils; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.RandomUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.stylefeng.roses.kernel.rule.enums.OrderTypeEnum; |
| | | import lombok.experimental.UtilityClass; |
| | | |
| | | /** |
| | | * 工具类 |
| | | */ |
| | | @UtilityClass |
| | | public class GeneralUtil { |
| | | |
| | | /** |
| | | * 生成订单号 |
| | | * 生成规则:订单前缀(2) + 时间(15) + 随机数(5) |
| | | */ |
| | | public String generateOrderNo(OrderTypeEnum e) { |
| | | return e.getCode() + |
| | | DateUtil.format(DateUtil.date(), "yyMMddHHmmssSSS") + |
| | | RandomUtil.randomNumbers(4); |
| | | } |
| | | |
| | | /** |
| | | * 生成退款订单号 |
| | | * 生成规则:订单前缀(3) + 业务订单号 |
| | | */ |
| | | public String generateRefundOrderNo(String orderNo) { |
| | | return OrderTypeEnum.REFUND_ORDER.getCode() + |
| | | orderNo; |
| | | } |
| | | |
| | | /** |
| | | * 生成员工工号 |
| | | * 生成规则:六位数字员工号,唯一 |
| | | */ |
| | | public String generateWorkNo() { |
| | | return RandomUtil.randomString(RandomUtil.BASE_NUMBER.toUpperCase(), 6); |
| | | } |
| | | |
| | | /** |
| | | * 生成用户展示ID |
| | | * 生成规则:XTT+随机六位数字 |
| | | */ |
| | | public String generateShowId() { |
| | | return "XTT" + RandomUtil.randomNumbers(6); |
| | | } |
| | | |
| | | /** |
| | | * 生成用户昵称 |
| | | * 生成规则:大写字母(2) + 随机数(4) |
| | | */ |
| | | public String generateNickName() { |
| | | return RandomUtil.randomString(RandomUtil.BASE_CHAR.toUpperCase(), 2) + RandomUtil.randomNumbers(4); |
| | | } |
| | | |
| | | /** |
| | | * 虚拟一个注册邮箱 |
| | | */ |
| | | public String generateEmail(String email) { |
| | | //return email + "@yjjjxlzx.com"; |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 生成随机模块编号 |
| | | * 生成规则:时间(15) + 随机数(5) |
| | | */ |
| | | public String generateModuleNo() { |
| | | return DateUtil.format(DateUtil.date(), "yyMMddHHmmssSSS") + |
| | | RandomUtil.randomNumbers(4); |
| | | } |
| | | |
| | | /** |
| | | * 统一的工作人员昵称 |
| | | * 生成规则:有昵称优先使用昵称,没有昵称使用姓名 |
| | | */ |
| | | public static String getUnifyNickName(String nickName, String realName) { |
| | | if (StrUtil.isNotBlank(nickName)) { |
| | | return nickName; |
| | | } |
| | | if (StrUtil.isNotBlank(realName)) { |
| | | return realName; |
| | | } |
| | | return null; |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.utils; |
| | | |
| | | import cn.hutool.core.lang.UUID; |
| | | import com.obs.services.ObsClient; |
| | | import com.obs.services.model.PutObjectResult; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | |
| | | /** |
| | | * @author guohongjin |
| | | * @create 2023/5/8 17:37 |
| | | */ |
| | | @Slf4j |
| | | @Data |
| | | @Component |
| | | @ConfigurationProperties(prefix = "obs") |
| | | public class ObsUtil { |
| | | |
| | | //endpoint |
| | | private String endPoint; |
| | | |
| | | private String ak; |
| | | |
| | | private String sk; |
| | | //桶名 |
| | | private String bucketName; |
| | | |
| | | private static ObsClient obsClient; |
| | | |
| | | //生成obsclient |
| | | private ObsClient createObsClient(){ |
| | | if (obsClient == null){ |
| | | synchronized (ObsClient.class){ |
| | | if (obsClient == null){ |
| | | // 创建ObsClient实例 |
| | | obsClient = new ObsClient(ak, sk, endPoint); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return obsClient; |
| | | } |
| | | |
| | | /** |
| | | * 文件上传 |
| | | * @param filePath 文件地址 |
| | | * @param fileName 文件名称 |
| | | */ |
| | | public String upload(String filePath,String fileName){ |
| | | // 待上传的本地文件路径,需要指定到具体的文件名 |
| | | FileInputStream fis = null; |
| | | try { |
| | | |
| | | fis = new FileInputStream(new File(filePath)); |
| | | String obsName = fileName.substring(fileName.lastIndexOf("/")+1,fileName.length()); |
| | | String obsFilePath = UUID.randomUUID().toString().replace("-","")+"/"+fileName.substring(0,fileName.lastIndexOf("/")+1); |
| | | // createObsClient().putObject(this.bucketName, obsFilePath, new ByteArrayInputStream(new byte[0])); |
| | | |
| | | PutObjectResult putObjectResult = createObsClient().putObject(this.bucketName, "//teest//tet//"+obsName, fis); |
| | | return putObjectResult.getObjectUrl(); |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 文件上传 |
| | | * @param file 文件对象 |
| | | * @param fileName 文件名称 |
| | | */ |
| | | public String upload(File file,String fileName){ |
| | | // 待上传的本地文件路径,需要指定到具体的文件名 |
| | | FileInputStream fis = null; |
| | | try { |
| | | fis = new FileInputStream(file); |
| | | PutObjectResult putObjectResult = createObsClient().putObject(this.bucketName, UUID.randomUUID().toString().replace("-","")+"/"+fileName, fis); |
| | | return putObjectResult.getObjectUrl(); |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 文件上传 |
| | | * @param file 文件对象 |
| | | */ |
| | | public String upload(MultipartFile file){ |
| | | |
| | | // 待上传的本地文件路径,需要指定到具体的文件名 |
| | | try { |
| | | PutObjectResult putObjectResult = createObsClient().putObject(this.bucketName, UUID.randomUUID().toString().replace("-","")+"/"+file.getOriginalFilename(), file.getInputStream()); |
| | | return putObjectResult.getObjectUrl(); |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | }catch(Exception ex){ |
| | | ex.printStackTrace(); |
| | | log.error("上传文件失败!",ex); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | // public static void main(String[] args) { |
| | | // // Endpoint以北京四为例,其他地区请按实际情况填写。 |
| | | // String endPoint = "https://obs.cn-east-3.myhuaweicloud.com"; |
| | | // String ak = "AYQCHVTCQUTHVDVLQZMJ"; |
| | | // String sk = "QSC0iTbxmugIzYoTH13lptrOkix6e15DGK1LOoky"; |
| | | // // 创建ObsClient实例 |
| | | // ObsClient obsClient = new ObsClient(ak, sk, endPoint); |
| | | // |
| | | // // 待上传的本地文件路径,需要指定到具体的文件名 |
| | | // FileInputStream fis = null; |
| | | // try { |
| | | // fis = new FileInputStream(new File("C:\\Users\\hyb\\Desktop\\CI.xlsx")); |
| | | // PutObjectResult putObjectResult = obsClient.putObject("fbwl", "CI.xlsx", fis); |
| | | // System.out.println(JSONObject.toJSON(putObjectResult)); |
| | | // } catch (FileNotFoundException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // |
| | | // |
| | | //// // 待上传的本地文件路径,需要指定到具体的文件名 |
| | | //// FileInputStream fis2 = new FileInputStream(new File("localfile2")); |
| | | //// PutObjectRequest request = new PutObjectRequest(); |
| | | //// request.setBucketName("bucketname"); |
| | | //// request.setObjectKey("objectname2"); |
| | | //// request.setInput(fis2); |
| | | //// obsClient.putObject(request); |
| | | // } |
| | | |
| | | |
| | | // public static String uploadFile(String fileUrl){ |
| | | // |
| | | // } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.utils; |
| | | |
| | | import cn.hutool.core.io.FileUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.google.common.collect.ImmutableSet; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.util.ContentCachingRequestWrapper; |
| | | import org.springframework.web.util.ContentCachingResponseWrapper; |
| | | |
| | | import javax.servlet.*; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Enumeration; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 调试请求日志过滤器 |
| | | * |
| | | * @author goupan |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class ReqDebugUtil implements Filter { |
| | | |
| | | private static final ImmutableSet<String> IGNORED_HEADERS; |
| | | |
| | | static { |
| | | Set<String> ignoredHeaders = ImmutableSet.of( |
| | | "Content-Type", |
| | | "User-Agent", |
| | | "Accept", |
| | | "Cache-Control", |
| | | "Postman-Token", |
| | | "Host", |
| | | "Accept-Encoding", |
| | | "Connection", |
| | | "Content-Length") |
| | | .stream() |
| | | .map(String::toUpperCase) |
| | | .collect(Collectors.toSet()); |
| | | IGNORED_HEADERS = ImmutableSet.copyOf(ignoredHeaders); |
| | | } |
| | | |
| | | @Override |
| | | public void init(FilterConfig filterConfig) throws ServletException { |
| | | // 通过filterConfig获取初始化参数 |
| | | log.info("调试请求日志过滤器 init.."); |
| | | } |
| | | |
| | | @Override |
| | | public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { |
| | | HttpServletRequest request = (HttpServletRequest) servletRequest; |
| | | HttpServletResponse response = (HttpServletResponse) servletResponse; |
| | | ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper(request); |
| | | ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response); |
| | | |
| | | try { |
| | | filterChain.doFilter(requestWrapper, responseWrapper); |
| | | } finally { |
| | | try { |
| | | // 请求地址 |
| | | String url = request.getRequestURL().toString(); |
| | | if (StrUtil.isBlank(FileUtil.getSuffix(url)) |
| | | && !url.contains("/doc.html") |
| | | && !url.contains("/swagger") |
| | | && !url.contains("/webjars") |
| | | && !url.contains("/api-docs") |
| | | ) { |
| | | // 构造header |
| | | Map header = new HashMap(16); |
| | | Enumeration<String> headerNames = request.getHeaderNames(); |
| | | while (headerNames.hasMoreElements()) { |
| | | String headerName = headerNames.nextElement(); |
| | | if (!IGNORED_HEADERS.contains(headerName.toUpperCase())) { |
| | | header.put(headerName, request.getHeader(headerName)); |
| | | } |
| | | } |
| | | |
| | | log.info( |
| | | "请求url: " + url + " method: " + request.getMethod() |
| | | + "\nheader: " + JSONUtil.toJsonStr(header) |
| | | + "\nparams: " + request.getQueryString() |
| | | + "\nreqBody: " + new String(requestWrapper.getContentAsByteArray(), StandardCharsets.UTF_8) |
| | | + "\nrepData: " + new String(responseWrapper.getContentAsByteArray(), StandardCharsets.UTF_8) |
| | | ); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | // 这一行必须添加,否则就一直不返回 |
| | | responseWrapper.copyBodyToResponse(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void destroy() { |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.utils; |
| | | |
| | | import cn.hutool.core.date.DateField; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.map.MapUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import lombok.experimental.UtilityClass; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @UtilityClass |
| | | public class StatDataUtil { |
| | | |
| | | /** |
| | | * 获取日期格式化SQL |
| | | * |
| | | * @param type |
| | | * @return |
| | | */ |
| | | public String getDateFormatSql(Integer type) { |
| | | String dateFormatSql = "%Y-%m-%d"; |
| | | if (type != null) { |
| | | switch (type) { |
| | | case 2: |
| | | return "%Y-%u"; |
| | | case 3: |
| | | return "%Y-%m"; |
| | | case 4: |
| | | return "%Y"; |
| | | } |
| | | } |
| | | return dateFormatSql; |
| | | } |
| | | /** |
| | | * 获取开始时间和结束时间(空使用默认) |
| | | * |
| | | * @param type 类型:1日,2周,3月,4年 |
| | | * @param beginTime 开始时间 |
| | | * @param endTime 结束时间 |
| | | * @return |
| | | */ |
| | | public List<String> getStartAndEndTime(Integer type, String beginTime, String endTime) { |
| | | Date nowDate = new Date(); |
| | | if (type == null || type == 1) { |
| | | if (StrUtil.isEmpty(beginTime)) { |
| | | beginTime = DateUtil.beginOfDay(DateUtil.offsetDay(nowDate, -30)).toString(); |
| | | }else{ |
| | | beginTime = beginTime + " 00:00:00"; |
| | | } |
| | | if (StrUtil.isEmpty(endTime)) { |
| | | endTime = DateUtil.endOfDay(nowDate).toString(); |
| | | }else{ |
| | | endTime = endTime + " 23:59:59"; |
| | | } |
| | | } else if (type == 2) { |
| | | if (StrUtil.isEmpty(beginTime)) { |
| | | DateTime weekDate = DateUtil.offsetWeek(nowDate, -11); |
| | | // int week = DateUtil.weekOfYear(weekDate); |
| | | // beginTime = DateUtil.format(weekDate, "yyyy") + "-" + StrUtil.padPre(String.valueOf(week), 2, "0"); |
| | | beginTime = DateUtil.beginOfDay(weekDate).toString(); |
| | | }else{ |
| | | beginTime = beginTime + " 00:00:00"; |
| | | } |
| | | if (StrUtil.isEmpty(endTime)) { |
| | | // int week = DateUtil.weekOfYear(nowDate); |
| | | endTime = DateUtil.endOfDay(nowDate).toString(); |
| | | // endTime = DateUtil.format(nowDate, "yyyy") + "-" + StrUtil.padPre(String.valueOf(week), 2, "0"); |
| | | }else{ |
| | | endTime = endTime + " 23:59:59"; |
| | | } |
| | | } else if (type == 3) { |
| | | if (StrUtil.isEmpty(beginTime)) { |
| | | beginTime = DateUtil.beginOfDay(DateUtil.offsetMonth(nowDate, -5)).toString(); |
| | | |
| | | }else{ |
| | | beginTime = beginTime + " 00:00:00"; |
| | | } |
| | | if (StrUtil.isEmpty(endTime)) { |
| | | endTime = DateUtil.endOfDay(nowDate).toString(); |
| | | }else{ |
| | | endTime = endTime + " 23:59:59"; |
| | | } |
| | | } else if (type == 4) { |
| | | if (StrUtil.isEmpty(beginTime)) { |
| | | beginTime = DateUtil.beginOfDay(DateUtil.offset(nowDate, DateField.YEAR, -2)).toString(); |
| | | }else{ |
| | | beginTime = beginTime + " 00:00:00"; |
| | | } |
| | | if (StrUtil.isEmpty(endTime)) { |
| | | endTime = DateUtil.endOfDay(nowDate).toString(); |
| | | }else{ |
| | | endTime = endTime + " 23:59:59"; |
| | | } |
| | | } |
| | | |
| | | return Arrays.asList(beginTime, endTime); |
| | | } |
| | | |
| | | /** |
| | | * 获取时间范围 |
| | | * |
| | | * @param type 类型:1日,2周,3月,4年 |
| | | * @param beginTime 开始时间 |
| | | * @param endTime 结束时间 |
| | | * @return |
| | | */ |
| | | public List<String> getBeginEndTimeRangeList(Integer type, String beginTime, String endTime) { |
| | | if (type == null || type == 1) { |
| | | return DateUtil.rangeToList(DateUtil.parse(beginTime), DateUtil.parse(endTime), DateField.DAY_OF_MONTH) |
| | | .stream() |
| | | .map(date -> DateUtil.format(date, "yyyy-MM-dd")) |
| | | .collect(Collectors.toList()); |
| | | } else if (type == 2) { |
| | | //return DateUtil.rangeToList(DateUtil.parse(beginTime, "yyyy-ww"), DateUtil.parse(endTime, "yyyy-ww"), DateField.WEEK_OF_YEAR) |
| | | return DateUtil.rangeToList(DateUtil.parse(beginTime), DateUtil.parse(endTime), DateField.WEEK_OF_YEAR) |
| | | .stream() |
| | | .map(date -> DateUtil.format(date, "yyyy-ww")) |
| | | .collect(Collectors.toList()); |
| | | } else if (type == 3) { |
| | | return DateUtil.rangeToList(DateUtil.parse(beginTime, "yyyy-MM"), DateUtil.parse(endTime, "yyyy-MM"), DateField.MONTH) |
| | | .stream() |
| | | .map(date -> DateUtil.format(date, "yyyy-MM")) |
| | | .collect(Collectors.toList()); |
| | | } else if (type == 4) { |
| | | return DateUtil.rangeToList(DateUtil.parse(beginTime, "yyyy"), DateUtil.parse(endTime, "yyyy"), DateField.YEAR) |
| | | .stream() |
| | | .map(date -> DateUtil.format(date, "yyyy")) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 封装时间数据 |
| | | * |
| | | * @param timeList 时间范围 |
| | | * @param dataList 数据列表 |
| | | * @param dataFieldName 数据字段名,默认:data |
| | | * @return |
| | | */ |
| | | public List<Map<String, Object>> wrapperTimeLIst(List<String> timeList, List<Map<String, Object>> dataList, String dataFieldName) { |
| | | dataFieldName = StrUtil.isNotEmpty(dataFieldName) ? dataFieldName : "data"; |
| | | String finalDataFieldName = dataFieldName; |
| | | return timeList.stream() |
| | | .map(time -> { |
| | | Object data = dataList.stream() |
| | | .filter(map -> map.get("time").equals(time)) |
| | | .findFirst() |
| | | .map(map -> map.get(finalDataFieldName)) |
| | | .orElse(0); |
| | | |
| | | Map<String, Object> hashMap = MapUtil.newHashMap(); |
| | | hashMap.put("time", time); |
| | | hashMap.put("data", data); |
| | | return hashMap; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | List<String> timeList = StatDataUtil.getStartAndEndTime(2, "", ""); |
| | | System.out.println(timeList.get(0)); |
| | | System.out.println(timeList.get(1)); |
| | | System.out.println("-------------------------------------"); |
| | | |
| | | // Integer type = 1; |
| | | // String beginTime = "2023-01-01", endTime = "2023-02-02"; |
| | | Integer type = 2; |
| | | String beginTime = "2023-46", endTime = "2024-05"; |
| | | // Integer type = 3; |
| | | // String beginTime = "2023-01", endTime = "2024-02"; |
| | | // Integer type = 4; |
| | | // String beginTime = "2020", endTime = "2024"; |
| | | timeList = StatDataUtil.getBeginEndTimeRangeList(type, beginTime, endTime); |
| | | timeList.forEach(System.out::println); |
| | | System.out.println("-------------------------------------"); |
| | | |
| | | HashMap m1 = new HashMap(); |
| | | m1.put("time", "2023-48"); |
| | | m1.put("data", "233"); |
| | | |
| | | HashMap m2 = new HashMap(); |
| | | m2.put("time", "2024-02"); |
| | | m2.put("data", "123"); |
| | | |
| | | HashMap m3 = new HashMap(); |
| | | m3.put("time", "2023-50"); |
| | | m3.put("data", "444"); |
| | | |
| | | List<Map<String, Object>> dataList = Arrays.asList(m1, m2, m3); |
| | | |
| | | List<Map<String, Object>> maps = StatDataUtil.wrapperTimeLIst(timeList, dataList, null); |
| | | for (Map<String, Object> map : maps) { |
| | | System.out.println(map.get("time") + "----" + map.get("data")); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package cn.stylefeng.guns.utils; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.lang.UUID; |
| | | import cn.hutool.core.util.RandomUtil; |
| | | import org.apache.commons.io.FilenameUtils; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | |
| | | |
| | | public class UploadUtil { |
| | | |
| | | //服务器存储地址 |
| | | // private static String rootPath = "/www/wwwroot/upload"; |
| | | private static String rootPath = "/file/"; |
| | | |
| | | //类型 |
| | | private static String type = "/guns" ; |
| | | |
| | | |
| | | //模块 |
| | | // private static String modelPath = "/store"; |
| | | private static String modelPath = "/public"; |
| | | |
| | | //扩展名 |
| | | private static String extStr = "png,jpg"; |
| | | |
| | | //文件大小上限 |
| | | private static int size = 2; |
| | | |
| | | public static String getRootPath() { |
| | | return rootPath; |
| | | } |
| | | |
| | | public static void setRootPath(String rootPath) { |
| | | UploadUtil.rootPath = (rootPath + "/").replace(" ", "").replace("//", "/"); |
| | | } |
| | | |
| | | public static String getType() { |
| | | return type; |
| | | } |
| | | |
| | | public static void setType(String type) { |
| | | UploadUtil.type = type + "/"; |
| | | } |
| | | |
| | | public static String getModelPath() { |
| | | return modelPath; |
| | | } |
| | | |
| | | public static void setModelPath(String modelPath) { |
| | | UploadUtil.modelPath = modelPath + "/"; |
| | | } |
| | | |
| | | public static String getExtStr() { |
| | | return extStr; |
| | | } |
| | | |
| | | public static void setExtStr(String extStr) { |
| | | UploadUtil.extStr = extStr; |
| | | } |
| | | |
| | | public static int getSize() { |
| | | return size; |
| | | } |
| | | |
| | | public static void setSize(int size) { |
| | | UploadUtil.size = size; |
| | | } |
| | | |
| | | /** |
| | | * 根据文件的绝对路径创建一个文件对象. |
| | | * @return 返回创建的这个文件对象 |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-08 |
| | | */ |
| | | public static File createFile(String filePath) throws IOException,Exception { |
| | | // 获取文件的完整目录 |
| | | String fileDir = FilenameUtils.getFullPath(filePath); |
| | | // 判断目录是否存在,不存在就创建一个目录 |
| | | File file = new File(fileDir); |
| | | if (!file.isDirectory()) { |
| | | //创建失败返回null |
| | | if (!file.mkdirs()) { |
| | | throw new Exception("文件目录创建失败..."); |
| | | } |
| | | } |
| | | // 判断这个文件是否存在,不存在就创建 |
| | | file = new File(filePath); |
| | | if (!file.exists()) { |
| | | if (!file.createNewFile()) { |
| | | throw new Exception("目标文件创建失败..."); |
| | | } |
| | | } |
| | | return file; |
| | | } |
| | | |
| | | /** |
| | | * 生成文件文件名 |
| | | * @param fileName 文件名 |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-08 |
| | | */ |
| | | public static String getDestPath(String fileName) { |
| | | //规则: 子目录/年/月/日.后缀名 |
| | | return getServerPath() + fileName; |
| | | } |
| | | |
| | | public static String fileName(String extName){ |
| | | return UUID.randomUUID().toString() + RandomUtil.randomString(10) + "." + extName; |
| | | } |
| | | |
| | | /** |
| | | * 生成文件在的实际的路径 |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-08 |
| | | */ |
| | | public static String getServerPath() { |
| | | // 文件分隔符转化为当前系统的格式 |
| | | return FilenameUtils.separatorsToSystem( getRootPath() + getWebPath()); |
| | | } |
| | | |
| | | /** |
| | | * web目录可访问的路径 |
| | | * @author Mr.Zhang |
| | | * @since 2020-05-08 |
| | | */ |
| | | public static String getWebPath() { |
| | | // 文件分隔符转化为当前系统的格式 |
| | | return getModelPath() + DateUtil.today().replace("-", "/") + "/"; |
| | | // return getType() + getModelPath() + DateUtil.nowDate(Constants.DATE_FORMAT_DATE).replace("-", "/") + "/"; |
| | | } |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <parent> |
| | | <groupId>cn.xiwang.guns</groupId> |
| | | <artifactId>xinlizixun</artifactId> |
| | | <version>7.3.3</version> |
| | | <relativePath>../pom.xml</relativePath> |
| | | </parent> |
| | | <artifactId>generator</artifactId> |
| | | <packaging>jar</packaging> |
| | | <dependencies> |
| | | |
| | | <dependency> |
| | | <groupId>com.ibeetl</groupId> |
| | | <artifactId>beetl</artifactId> |
| | | <version>2.8.5</version> |
| | | </dependency> |
| | | |
| | | |
| | | |
| | | <!--通用依赖--> |
| | | |
| | | <dependency> |
| | | <groupId>com.baomidou</groupId> |
| | | <artifactId>mybatis-plus-generate</artifactId> |
| | | <version>2.3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.baomidou</groupId> |
| | | <artifactId>mybatisplus-spring-boot-starter</artifactId> |
| | | <version>1.0.5</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.velocity</groupId> |
| | | <artifactId>velocity</artifactId> |
| | | <version>1.7</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>mysql</groupId> |
| | | <artifactId>mysql-connector-java</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-jdbc</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | | <artifactId>druid</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | | <artifactId>fastjson</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.commons</groupId> |
| | | <artifactId>commons-lang3</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.google.code.gson</groupId> |
| | | <artifactId>gson</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>cn.hutool</groupId> |
| | | <artifactId>hutool-all</artifactId> |
| | | <version>${hutool.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.baomidou</groupId> |
| | | <artifactId>mybatis-plus</artifactId> |
| | | <version>2.3</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
New file |
| | |
| | | package com.mindant.generator.action; |
| | | |
| | | import cn.hutool.db.Db; |
| | | import cn.hutool.db.Entity; |
| | | import cn.hutool.db.ds.simple.SimpleDataSource; |
| | | import com.mindant.generator.action.config.WebGeneratorConfig; |
| | | import com.mindant.generator.action.model.GenQo; |
| | | |
| | | import java.util.LinkedHashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 代码生成器,可以生成实体,dao,service,controller,html,js |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/21 12:38 |
| | | */ |
| | | public class GunsCodeBatchGenerator { |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | // 数据库名 |
| | | String dbName = "xlzx"; |
| | | // 数据库连接 |
| | | String url = "jdbc:mysql://rm-2vc47rysl5jt6gv312o.mysql.cn-chengdu.rds.aliyuncs.com:3306/" |
| | | + dbName |
| | | + "?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true"; |
| | | // 用户名 |
| | | String userName = "root_dev"; |
| | | // 密码 |
| | | String password = "00aabb00"; |
| | | |
| | | // 查询数据库表名、注释 |
| | | String tableSql = "SELECT TABLE_NAME AS tableName,TABLE_COMMENT AS tableComment FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = '" + dbName + "'" + |
| | | " AND TABLE_NAME NOT LIKE 'sys_%'" + |
| | | " ORDER BY TABLE_NAME ASC"; |
| | | |
| | | // 创建数据源 |
| | | SimpleDataSource ds = new SimpleDataSource(url, userName, password); |
| | | |
| | | // 使用数据源连接数据库 |
| | | Db db = Db.use(ds); |
| | | |
| | | List<Entity> list = db.query(tableSql); |
| | | |
| | | // 查询表名、注释 |
| | | LinkedHashMap<String, String> tableCommentMap = list.stream().collect(Collectors.toMap(e -> e.getStr("tableName"), e -> e.getStr("tableComment"), (e1, e2) -> e1, LinkedHashMap::new)); |
| | | |
| | | // 执行SQL查询 |
| | | for (String k : tableCommentMap.keySet()) { |
| | | // 打印数据表名 |
| | | System.out.println("\"" + k + "\","); |
| | | // System.out.println(k + ":" + tableCommentMap.get(k)); |
| | | } |
| | | |
| | | String[] tableNameArray = new String[]{ |
| | | // "hr_org_approver", |
| | | // "hr_organization", |
| | | // "hr_position", |
| | | "t_counselling_user" |
| | | |
| | | }; |
| | | |
| | | for (String tableName : tableNameArray) { |
| | | genTableModel(dbName, url, userName, password, tableName, tableCommentMap); |
| | | } |
| | | } |
| | | |
| | | public static void genTableModel(String dbName, String url, String userName, String password, String tableName, Map<String, String> tableCommentMap) { |
| | | /* |
| | | * guns的生成器: |
| | | * guns的代码生成器可以生成controller,html页面,页面对应的js |
| | | */ |
| | | // GunsGeneratorConfig gunsGeneratorConfig = new GunsGeneratorConfig(); |
| | | // gunsGeneratorConfig.doMpGeneration(); |
| | | // gunsGeneratorConfig.doGunsGeneration(); |
| | | |
| | | // 代码生成的查询参数 |
| | | GenQo genQo = new GenQo(); |
| | | //数据库url |
| | | genQo.setUrl(url); |
| | | // 数据库用户名 |
| | | genQo.setUserName(userName); |
| | | // 数据库密码 |
| | | genQo.setPassword(password); |
| | | // 表名 |
| | | genQo.setTableName(tableName); |
| | | // 作者 |
| | | genQo.setAuthor("guohongjin"); |
| | | // 数据库名 |
| | | genQo.setDbName(dbName); |
| | | // 项目包 |
| | | genQo.setProjectPackage("cn.stylefeng.guns"); |
| | | genQo.setModuleName("business"); |
| | | // 代码生成位置 |
| | | genQo.setProjectPath("D:\\code\\xinlizixun_dev\\common-buiness"); |
| | | // 用户信息 |
| | | genQo.setBizName(tableCommentMap.get(tableName)); |
| | | genQo.setControllerSwitch(true); |
| | | genQo.setEntitySwitch(true); |
| | | genQo.setServiceSwitch(true); |
| | | genQo.setDaoSwitch(true); |
| | | genQo.setIgnoreTabelPrefix("t_"); |
| | | |
| | | WebGeneratorConfig webGeneratorConfig = new WebGeneratorConfig(genQo); |
| | | webGeneratorConfig.doMpGeneration(); |
| | | webGeneratorConfig.doGunsGeneration(); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.mindant.generator.action; |
| | | |
| | | |
| | | import com.mindant.generator.action.config.GunsGeneratorConfig; |
| | | import com.mindant.generator.action.config.WebGeneratorConfig; |
| | | import com.mindant.generator.action.model.GenQo; |
| | | |
| | | /** |
| | | * 代码生成器,可以生成实体,dao,service,controller,html,js |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/21 12:38 |
| | | */ |
| | | public class GunsCodeGenerator { |
| | | |
| | | public static void main(String[] args) { |
| | | |
| | | // /** |
| | | // * Mybatis-Plus的代码生成器: |
| | | // * mp的代码生成器可以生成实体,mapper,mapper对应的xml,service |
| | | // */ |
| | | // GunsGeneratorConfig gunsGeneratorConfig = new GunsGeneratorConfig(); |
| | | // gunsGeneratorConfig.doMpGeneration(); |
| | | |
| | | /** |
| | | * guns的生成器: |
| | | * guns的代码生成器可以生成controller,html页面,页面对应的js |
| | | */ |
| | | // gunsGeneratorConfig.doGunsGeneration(); |
| | | GenQo genQo = new GenQo(); |
| | | //数据库url |
| | | genQo.setUrl("jdbc:mysql://rm-2vc47rysl5jt6gv312o.mysql.cn-chengdu.rds.aliyuncs.com:3306/fbwl?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true"); |
| | | //数据库密码 |
| | | genQo.setPassword("00aabb00"); |
| | | //数据库用户名 |
| | | genQo.setUserName("root_dev"); |
| | | //表名 |
| | | genQo.setTableName("t_area"); |
| | | genQo.setAuthor("guohongjin"); |
| | | //数据库名 |
| | | genQo.setDbName("fbwl"); |
| | | //项目包 |
| | | genQo.setProjectPackage("cn.stylefeng.guns"); |
| | | genQo.setModuleName("business"); |
| | | //代码生成位置 |
| | | genQo.setProjectPath("D:\\code\\xinlizixun_dev\\common-buiness"); |
| | | //用户信息 |
| | | genQo.setBizName("地区码表"); |
| | | genQo.setControllerSwitch(true); |
| | | genQo.setEntitySwitch(true); |
| | | genQo.setServiceSwitch(true); |
| | | genQo.setDaoSwitch(true); |
| | | genQo.setIgnoreTabelPrefix("t_"); |
| | | |
| | | WebGeneratorConfig webGeneratorConfig = new WebGeneratorConfig(genQo); |
| | | webGeneratorConfig.doMpGeneration(); |
| | | webGeneratorConfig.doGunsGeneration(); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.mindant.generator.action.config; |
| | | |
| | | import com.baomidou.mybatisplus.generator.AutoGenerator; |
| | | import com.baomidou.mybatisplus.generator.config.*; |
| | | import com.baomidou.mybatisplus.generator.config.po.TableInfo; |
| | | import com.mindant.generator.engine.SimpleTemplateEngine; |
| | | import com.mindant.generator.engine.base.GunsTemplateEngine; |
| | | import com.mindant.generator.engine.config.ContextConfig; |
| | | import com.mindant.generator.util.FileUtil; |
| | | |
| | | |
| | | import java.io.File; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 代码生成的抽象配置 |
| | | */ |
| | | public abstract class AbstractGeneratorConfig { |
| | | |
| | | /** |
| | | * Java实体自定义模板(在/src/main/resources目录下,*建议:与Rest模板保持一致*) |
| | | */ |
| | | private static final String templateFilePath = "/gunsTemplate/advanced/entity.java.vm"; |
| | | |
| | | /** |
| | | * mybatis-plus代码生成器配置 |
| | | */ |
| | | GlobalConfig globalConfig = new GlobalConfig(); |
| | | |
| | | DataSourceConfig dataSourceConfig = new DataSourceConfig(); |
| | | |
| | | StrategyConfig strategyConfig = new StrategyConfig(); |
| | | |
| | | PackageConfig packageConfig = new PackageConfig(); |
| | | |
| | | TableInfo tableInfo = null; |
| | | |
| | | /** |
| | | * Guns代码生成器配置 |
| | | */ |
| | | ContextConfig contextConfig = new ContextConfig(); |
| | | |
| | | // SqlConfig sqlConfig = new SqlConfig(); |
| | | |
| | | protected abstract void config(); |
| | | |
| | | public void init() { |
| | | config(); |
| | | |
| | | packageConfig.setService(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service"); |
| | | packageConfig.setServiceImpl(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.impl"); |
| | | |
| | | //controller没用掉,生成之后会自动删掉 |
| | | packageConfig.setController("TTT"); |
| | | |
| | | if (!contextConfig.getEntitySwitch()) { |
| | | packageConfig.setEntity("TTT"); |
| | | } |
| | | |
| | | if (!contextConfig.getDaoSwitch()) { |
| | | packageConfig.setMapper("TTT"); |
| | | packageConfig.setXml("TTT"); |
| | | } |
| | | |
| | | if (!contextConfig.getServiceSwitch()) { |
| | | packageConfig.setService("TTT"); |
| | | packageConfig.setServiceImpl("TTT"); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 删除不必要的代码 |
| | | */ |
| | | public void destory() { |
| | | String outputDir = globalConfig.getOutputDir() + "/TTT"; |
| | | FileUtil.deleteDir(new File(outputDir)); |
| | | } |
| | | |
| | | public AbstractGeneratorConfig() { |
| | | } |
| | | |
| | | public void doMpGeneration() { |
| | | init(); |
| | | AutoGenerator autoGenerator = new AutoGenerator(); |
| | | autoGenerator.setGlobalConfig(globalConfig); |
| | | autoGenerator.setDataSource(dataSourceConfig); |
| | | autoGenerator.setStrategy(strategyConfig); |
| | | autoGenerator.setPackageInfo(packageConfig); |
| | | |
| | | // 自定义模板配置【如使用默认模板,则注释此段代码】 |
| | | TemplateConfig tc = new TemplateConfig(); |
| | | tc.setEntity(templateFilePath); |
| | | tc.setMapper("/gunsTemplate/advanced/mapper.java.vm"); |
| | | tc.setService("/gunsTemplate/advanced/service.java.vm"); |
| | | tc.setServiceImpl("/gunsTemplate/advanced/serviceImpl.java.vm"); |
| | | // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。 |
| | | autoGenerator.setTemplate(tc); |
| | | |
| | | autoGenerator.execute(); |
| | | destory(); |
| | | |
| | | //获取table信息,用于guns代码生成 |
| | | List<TableInfo> tableInfoList = autoGenerator.getConfig().getTableInfoList(); |
| | | if (tableInfoList != null && tableInfoList.size() > 0) { |
| | | this.tableInfo = tableInfoList.get(0); |
| | | } |
| | | } |
| | | |
| | | public void doGunsGeneration() { |
| | | GunsTemplateEngine GunsTemplateEngine = new SimpleTemplateEngine(); |
| | | GunsTemplateEngine.setContextConfig(contextConfig); |
| | | // sqlConfig.setConnection(dataSourceConfig.getConn()); |
| | | // GunsTemplateEngine.setSqlConfig(sqlConfig); |
| | | GunsTemplateEngine.setTableInfo(tableInfo); |
| | | GunsTemplateEngine.start(); |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.action.config; |
| | | |
| | | import com.baomidou.mybatisplus.generator.config.rules.DbType; |
| | | import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; |
| | | |
| | | /** |
| | | * 默认的代码生成的配置 |
| | | */ |
| | | public class GunsGeneratorConfig extends AbstractGeneratorConfig { |
| | | |
| | | protected void globalConfig() { |
| | | globalConfig.setOutputDir("D:\\ttt");//写自己项目的绝对路径,注意具体到java目录 |
| | | globalConfig.setFileOverride(true); |
| | | globalConfig.setEnableCache(false); |
| | | globalConfig.setBaseResultMap(true); |
| | | globalConfig.setBaseColumnList(true); |
| | | globalConfig.setOpen(false); |
| | | globalConfig.setAuthor("stylefeng"); |
| | | } |
| | | |
| | | protected void dataSourceConfig() { |
| | | dataSourceConfig.setDbType(DbType.MYSQL); |
| | | dataSourceConfig.setDriverName("com.mysql.jdbc.Driver"); |
| | | dataSourceConfig.setUsername("root"); |
| | | dataSourceConfig.setPassword("root"); |
| | | dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/guns?characterEncoding=utf8"); |
| | | } |
| | | |
| | | protected void strategyConfig() { |
| | | strategyConfig.setTablePrefix(new String[]{"sys_"});// 此处可以修改为您的表前缀 |
| | | strategyConfig.setNaming(NamingStrategy.underline_to_camel); |
| | | // 是否使用Lombok简化代码 |
| | | strategyConfig.setEntityLombokModel(true); |
| | | } |
| | | |
| | | protected void packageConfig() { |
| | | packageConfig.setParent(null); |
| | | packageConfig.setEntity("com.mindant.admin.common.persistence.model"); |
| | | packageConfig.setMapper("com.mindant.admin.common.persistence.dao"); |
| | | packageConfig.setXml("com.mindant.admin.common.persistence.dao.mapping"); |
| | | } |
| | | |
| | | protected void contextConfig() { |
| | | contextConfig.setProPackage("com.mindant.admin"); |
| | | contextConfig.setCoreBasePackage("com.mindant.core"); |
| | | contextConfig.setBizChName("字典管理"); |
| | | contextConfig.setBizEnName("sysDict"); |
| | | contextConfig.setModuleName("system"); |
| | | contextConfig.setProjectPath("D:\\ideaSpace\\guns\\guns-admin");//写自己项目的绝对路径 |
| | | contextConfig.setEntityName("SysDict"); |
| | | // sqlConfig.setParentMenuName(null);//这里写已有菜单的名称,当做父节点 |
| | | |
| | | /** |
| | | * mybatis-plus 生成器开关 |
| | | */ |
| | | contextConfig.setEntitySwitch(true); |
| | | contextConfig.setDaoSwitch(true); |
| | | contextConfig.setServiceSwitch(true); |
| | | |
| | | /** |
| | | * guns 生成器开关 |
| | | */ |
| | | contextConfig.setControllerSwitch(true); |
| | | contextConfig.setIndexPageSwitch(true); |
| | | contextConfig.setAddPageSwitch(true); |
| | | contextConfig.setEditPageSwitch(true); |
| | | contextConfig.setJsSwitch(true); |
| | | contextConfig.setInfoJsSwitch(true); |
| | | contextConfig.setSqlSwitch(true); |
| | | } |
| | | |
| | | @Override |
| | | protected void config() { |
| | | globalConfig(); |
| | | dataSourceConfig(); |
| | | strategyConfig(); |
| | | packageConfig(); |
| | | contextConfig(); |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.action.config; |
| | | |
| | | import com.baomidou.mybatisplus.generator.config.rules.DbType; |
| | | import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; |
| | | import com.mindant.generator.action.model.GenQo; |
| | | import com.mindant.generator.util.StrKit; |
| | | import com.mindant.generator.util.ToolUtil; |
| | | |
| | | import java.io.File; |
| | | |
| | | /** |
| | | * 默认的代码生成的配置 |
| | | */ |
| | | public class WebGeneratorConfig extends AbstractGeneratorConfig { |
| | | |
| | | private GenQo genQo; |
| | | |
| | | public WebGeneratorConfig(GenQo genQo) { |
| | | this.genQo = genQo; |
| | | } |
| | | |
| | | @Override |
| | | protected void config() { |
| | | /** |
| | | * 数据库配置 |
| | | */ |
| | | dataSourceConfig.setDbType(DbType.MYSQL); |
| | | dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver"); |
| | | dataSourceConfig.setUsername(genQo.getUserName()); |
| | | dataSourceConfig.setPassword(genQo.getPassword()); |
| | | dataSourceConfig.setUrl(genQo.getUrl()); |
| | | |
| | | /** |
| | | * 全局配置 |
| | | */ |
| | | globalConfig.setOutputDir(genQo.getProjectPath() + File.separator + "src" + File.separator + "main" + File.separator + "java"); |
| | | globalConfig.setFileOverride(true); |
| | | globalConfig.setEnableCache(false); |
| | | globalConfig.setBaseResultMap(true); |
| | | globalConfig.setBaseColumnList(true); |
| | | globalConfig.setOpen(false); |
| | | globalConfig.setAuthor(genQo.getAuthor()); |
| | | contextConfig.setProPackage(genQo.getProjectPackage()); |
| | | contextConfig.setCoreBasePackage(genQo.getCorePackage()); |
| | | |
| | | /** |
| | | * 生成策略 |
| | | */ |
| | | if (genQo.getIgnoreTabelPrefix() != null) { |
| | | strategyConfig.setTablePrefix(new String[]{genQo.getIgnoreTabelPrefix()}); |
| | | } |
| | | strategyConfig.setInclude(new String[]{genQo.getTableName()}); |
| | | strategyConfig.setNaming(NamingStrategy.underline_to_camel); |
| | | // 是否使用Lombok简化代码 |
| | | strategyConfig.setEntityLombokModel(true); |
| | | packageConfig.setParent(null); |
| | | packageConfig.setEntity(genQo.getProjectPackage() + ".modular." + genQo.getModuleName() + ".entity"); |
| | | packageConfig.setMapper(genQo.getProjectPackage() + ".modular." + genQo.getModuleName() + ".mapper"); |
| | | packageConfig.setXml(genQo.getProjectPackage() + ".modular." + genQo.getModuleName() + ".mapper.mapping"); |
| | | |
| | | /** |
| | | * 业务代码配置 |
| | | */ |
| | | // 数据库名 |
| | | contextConfig.setDbName(genQo.getDbName()); |
| | | contextConfig.setBizChName(genQo.getBizName()); |
| | | contextConfig.setModuleName(genQo.getModuleName()); |
| | | contextConfig.setProjectPath(genQo.getProjectPath());//写自己项目的绝对路径 |
| | | if(ToolUtil.isEmpty(genQo.getIgnoreTabelPrefix())){ |
| | | String entityName = StrKit.toCamelCase(genQo.getTableName()); |
| | | contextConfig.setEntityName(StrKit.firstCharToUpperCase(entityName)); |
| | | contextConfig.setBizEnName(StrKit.firstCharToLowerCase(entityName)); |
| | | }else{ |
| | | String entiyName = StrKit.toCamelCase(StrKit.removePrefix(genQo.getTableName(), genQo.getIgnoreTabelPrefix())); |
| | | contextConfig.setEntityName(StrKit.firstCharToUpperCase(entiyName)); |
| | | contextConfig.setBizEnName(StrKit.firstCharToLowerCase(entiyName)); |
| | | } |
| | | //这里写已有菜单的名称,当做父节点 |
| | | // sqlConfig.setParentMenuName(genQo.getParentMenuName()); |
| | | |
| | | /** |
| | | * mybatis-plus 生成器开关 |
| | | */ |
| | | contextConfig.setEntitySwitch(genQo.getEntitySwitch()); |
| | | contextConfig.setDaoSwitch(genQo.getDaoSwitch()); |
| | | contextConfig.setServiceSwitch(genQo.getServiceSwitch()); |
| | | |
| | | /** |
| | | * guns 生成器开关 |
| | | */ |
| | | contextConfig.setControllerSwitch(genQo.getControllerSwitch()); |
| | | contextConfig.setIndexPageSwitch(genQo.getIndexPageSwitch()); |
| | | contextConfig.setAddPageSwitch(genQo.getAddPageSwitch()); |
| | | contextConfig.setEditPageSwitch(genQo.getEditPageSwitch()); |
| | | contextConfig.setJsSwitch(genQo.getJsSwitch()); |
| | | contextConfig.setInfoJsSwitch(genQo.getInfoJsSwitch()); |
| | | contextConfig.setSqlSwitch( false); |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.action.model; |
| | | |
| | | /** |
| | | * 代码生成的查询参数 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-11-30-下午2:05 |
| | | */ |
| | | public class GenQo { |
| | | |
| | | /** |
| | | * 数据库名 |
| | | */ |
| | | private String dbName; |
| | | |
| | | /** |
| | | * 数据库账号 |
| | | */ |
| | | private String userName; |
| | | |
| | | /** |
| | | * 数据库密码 |
| | | */ |
| | | private String password; |
| | | |
| | | /** |
| | | * 数据库url |
| | | */ |
| | | private String url; |
| | | |
| | | /** |
| | | * 项目地址 |
| | | */ |
| | | private String projectPath; |
| | | |
| | | /** |
| | | * 作者 |
| | | */ |
| | | private String author; |
| | | |
| | | /** |
| | | * 项目的包 |
| | | */ |
| | | private String projectPackage; |
| | | |
| | | /** |
| | | * 核心模块的包 |
| | | */ |
| | | private String corePackage; |
| | | |
| | | /** |
| | | * 表名称 |
| | | */ |
| | | private String tableName; |
| | | |
| | | /** |
| | | * 忽略的表前缀 |
| | | */ |
| | | private String ignoreTabelPrefix; |
| | | |
| | | /** |
| | | * 业务名称 |
| | | */ |
| | | private String bizName; |
| | | |
| | | /** |
| | | * 模块名 |
| | | */ |
| | | private String moduleName; |
| | | |
| | | /** |
| | | * 父级菜单名称 |
| | | */ |
| | | private String parentMenuName; |
| | | |
| | | /** |
| | | * 是否生成控制器代码开关 |
| | | */ |
| | | private Boolean controllerSwitch = false; |
| | | |
| | | /** |
| | | * 主页 |
| | | */ |
| | | private Boolean indexPageSwitch = false; |
| | | |
| | | /** |
| | | * 添加页面 |
| | | */ |
| | | private Boolean addPageSwitch = false; |
| | | |
| | | /** |
| | | * 编辑页面 |
| | | */ |
| | | private Boolean editPageSwitch = false; |
| | | |
| | | /** |
| | | * 主页的js |
| | | */ |
| | | private Boolean jsSwitch = false; |
| | | |
| | | /** |
| | | * 详情页面js |
| | | */ |
| | | private Boolean infoJsSwitch = false; |
| | | |
| | | /** |
| | | * dao的开关 |
| | | */ |
| | | private Boolean daoSwitch = false; |
| | | |
| | | /** |
| | | * service |
| | | */ |
| | | private Boolean serviceSwitch = false; |
| | | |
| | | /** |
| | | * 生成实体的开关 |
| | | */ |
| | | private Boolean entitySwitch = false; |
| | | |
| | | /** |
| | | * 生成sql的开关 |
| | | */ |
| | | private Boolean sqlSwitch = false; |
| | | |
| | | public String getDbName() { |
| | | return dbName; |
| | | } |
| | | |
| | | public void setDbName(String dbName) { |
| | | this.dbName = dbName; |
| | | } |
| | | |
| | | public String getUserName() { |
| | | return userName; |
| | | } |
| | | |
| | | public void setUserName(String userName) { |
| | | this.userName = userName; |
| | | } |
| | | |
| | | public String getPassword() { |
| | | return password; |
| | | } |
| | | |
| | | public void setPassword(String password) { |
| | | this.password = password; |
| | | } |
| | | |
| | | public String getUrl() { |
| | | return url; |
| | | } |
| | | |
| | | public void setUrl(String url) { |
| | | this.url = url; |
| | | } |
| | | |
| | | public String getProjectPath() { |
| | | return projectPath; |
| | | } |
| | | |
| | | public void setProjectPath(String projectPath) { |
| | | this.projectPath = projectPath; |
| | | } |
| | | |
| | | public String getAuthor() { |
| | | return author; |
| | | } |
| | | |
| | | public void setAuthor(String author) { |
| | | this.author = author; |
| | | } |
| | | |
| | | public String getCorePackage() { |
| | | return corePackage; |
| | | } |
| | | |
| | | public void setCorePackage(String corePackage) { |
| | | this.corePackage = corePackage; |
| | | } |
| | | |
| | | public String getProjectPackage() { |
| | | |
| | | return projectPackage; |
| | | } |
| | | |
| | | public void setProjectPackage(String projectPackage) { |
| | | this.projectPackage = projectPackage; |
| | | } |
| | | |
| | | public String getTableName() { |
| | | return tableName; |
| | | } |
| | | |
| | | public void setTableName(String tableName) { |
| | | this.tableName = tableName; |
| | | } |
| | | |
| | | public String getIgnoreTabelPrefix() { |
| | | return ignoreTabelPrefix; |
| | | } |
| | | |
| | | public void setIgnoreTabelPrefix(String ignoreTabelPrefix) { |
| | | this.ignoreTabelPrefix = ignoreTabelPrefix; |
| | | } |
| | | |
| | | public String getBizName() { |
| | | return bizName; |
| | | } |
| | | |
| | | public void setBizName(String bizName) { |
| | | this.bizName = bizName; |
| | | } |
| | | |
| | | public String getModuleName() { |
| | | return moduleName; |
| | | } |
| | | |
| | | public void setModuleName(String moduleName) { |
| | | this.moduleName = moduleName; |
| | | } |
| | | |
| | | public Boolean getControllerSwitch() { |
| | | return controllerSwitch; |
| | | } |
| | | |
| | | public void setControllerSwitch(Boolean controllerSwitch) { |
| | | this.controllerSwitch = controllerSwitch; |
| | | } |
| | | |
| | | public Boolean getIndexPageSwitch() { |
| | | return indexPageSwitch; |
| | | } |
| | | |
| | | public void setIndexPageSwitch(Boolean indexPageSwitch) { |
| | | this.indexPageSwitch = indexPageSwitch; |
| | | } |
| | | |
| | | public Boolean getAddPageSwitch() { |
| | | return addPageSwitch; |
| | | } |
| | | |
| | | public void setAddPageSwitch(Boolean addPageSwitch) { |
| | | this.addPageSwitch = addPageSwitch; |
| | | } |
| | | |
| | | public Boolean getEditPageSwitch() { |
| | | return editPageSwitch; |
| | | } |
| | | |
| | | public void setEditPageSwitch(Boolean editPageSwitch) { |
| | | this.editPageSwitch = editPageSwitch; |
| | | } |
| | | |
| | | public Boolean getJsSwitch() { |
| | | return jsSwitch; |
| | | } |
| | | |
| | | public void setJsSwitch(Boolean jsSwitch) { |
| | | this.jsSwitch = jsSwitch; |
| | | } |
| | | |
| | | public Boolean getInfoJsSwitch() { |
| | | return infoJsSwitch; |
| | | } |
| | | |
| | | public void setInfoJsSwitch(Boolean infoJsSwitch) { |
| | | this.infoJsSwitch = infoJsSwitch; |
| | | } |
| | | |
| | | public Boolean getDaoSwitch() { |
| | | return daoSwitch; |
| | | } |
| | | |
| | | public void setDaoSwitch(Boolean daoSwitch) { |
| | | this.daoSwitch = daoSwitch; |
| | | } |
| | | |
| | | public Boolean getServiceSwitch() { |
| | | return serviceSwitch; |
| | | } |
| | | |
| | | public void setServiceSwitch(Boolean serviceSwitch) { |
| | | this.serviceSwitch = serviceSwitch; |
| | | } |
| | | |
| | | public Boolean getEntitySwitch() { |
| | | return entitySwitch; |
| | | } |
| | | |
| | | public void setEntitySwitch(Boolean entitySwitch) { |
| | | this.entitySwitch = entitySwitch; |
| | | } |
| | | |
| | | public Boolean getSqlSwitch() { |
| | | return sqlSwitch; |
| | | } |
| | | |
| | | public void setSqlSwitch(Boolean sqlSwitch) { |
| | | this.sqlSwitch = sqlSwitch; |
| | | } |
| | | |
| | | public String getParentMenuName() { |
| | | return parentMenuName; |
| | | } |
| | | |
| | | public void setParentMenuName(String parentMenuName) { |
| | | this.parentMenuName = parentMenuName; |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.engine; |
| | | |
| | | |
| | | import com.mindant.generator.engine.base.GunsTemplateEngine; |
| | | import com.mindant.generator.util.ToolUtil; |
| | | |
| | | |
| | | /** |
| | | * 通用的模板生成引擎 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-09 20:32 |
| | | */ |
| | | public class SimpleTemplateEngine extends GunsTemplateEngine { |
| | | |
| | | @Override |
| | | protected void generatePageEditHtml() { |
| | | String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageEditPathTemplate(), |
| | | super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); |
| | | generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_edit.html.btl", path); |
| | | System.out.println("生成编辑页面成功!"); |
| | | } |
| | | |
| | | @Override |
| | | protected void generatePageAddHtml() { |
| | | String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageAddPathTemplate(), |
| | | super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); |
| | | generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_add.html.btl", path); |
| | | System.out.println("生成添加页面成功!"); |
| | | } |
| | | |
| | | @Override |
| | | protected void generatePageInfoJs() { |
| | | String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageInfoJsPathTemplate(), |
| | | super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); |
| | | generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_info.js.btl", path); |
| | | System.out.println("生成页面详情js成功!"); |
| | | } |
| | | |
| | | @Override |
| | | protected void generatePageJs() { |
| | | String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageJsPathTemplate(), |
| | | super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); |
| | | generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page.js.btl", path); |
| | | System.out.println("生成页面js成功!"); |
| | | } |
| | | |
| | | @Override |
| | | protected void generatePageHtml() { |
| | | String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPagePathTemplate(), |
| | | super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); |
| | | generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page.html.btl", path); |
| | | System.out.println("生成页面成功!"); |
| | | } |
| | | |
| | | @Override |
| | | protected void generateController() { |
| | | String controllerPath = ToolUtil.format(super.getContextConfig().getProjectPath() + super.getControllerConfig().getControllerPathTemplate(), |
| | | ToolUtil.firstLetterToUpper(super.getContextConfig().getBizEnName())); |
| | | generateFile(super.getContextConfig().getTemplatePrefixPath() + "/Controller.java.btl", controllerPath); |
| | | System.out.println("生成控制器成功!"); |
| | | } |
| | | |
| | | @Override |
| | | protected void generateSqls() { |
| | | // String path = ToolUtil.format(super.getContextConfig().getProjectPath() + super.sqlConfig.getSqlPathTemplate(), |
| | | // ToolUtil.firstLetterToUpper(super.getContextConfig().getBizEnName())); |
| | | // generateFile(super.getContextConfig().getTemplatePrefixPath() + "/menu_sql.sql.btl", path); |
| | | // System.out.println("生成sql成功!"); |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.engine.base; |
| | | |
| | | import com.baomidou.mybatisplus.generator.config.po.TableInfo; |
| | | import com.mindant.generator.engine.config.*; |
| | | |
| | | /** |
| | | * 模板生成父类 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-08 20:17 |
| | | */ |
| | | public class AbstractTemplateEngine { |
| | | |
| | | protected ContextConfig contextConfig; //全局配置 |
| | | protected ControllerConfig controllerConfig; //控制器的配置 |
| | | protected PageConfig pageConfig; //页面的控制器 |
| | | protected DaoConfig daoConfig; //Dao配置 |
| | | protected ServiceConfig serviceConfig; //Service配置 |
| | | // protected SqlConfig sqlConfig; //sql配置 |
| | | protected TableInfo tableInfo; //表的信息 |
| | | |
| | | public void initConfig() { |
| | | if (this.contextConfig == null) { |
| | | this.contextConfig = new ContextConfig(); |
| | | } |
| | | if (this.controllerConfig == null) { |
| | | this.controllerConfig = new ControllerConfig(); |
| | | } |
| | | if (this.pageConfig == null) { |
| | | this.pageConfig = new PageConfig(); |
| | | } |
| | | if (this.daoConfig == null) { |
| | | this.daoConfig = new DaoConfig(); |
| | | } |
| | | if (this.serviceConfig == null) { |
| | | this.serviceConfig = new ServiceConfig(); |
| | | } |
| | | // if (this.sqlConfig == null) { |
| | | // this.sqlConfig = new SqlConfig(); |
| | | // } |
| | | this.contextConfig.init(); |
| | | |
| | | this.controllerConfig.setContextConfig(this.contextConfig); |
| | | this.controllerConfig.init(); |
| | | |
| | | this.serviceConfig.setContextConfig(this.contextConfig); |
| | | this.serviceConfig.init(); |
| | | |
| | | this.daoConfig.setContextConfig(this.contextConfig); |
| | | this.daoConfig.init(); |
| | | |
| | | this.pageConfig.setContextConfig(this.contextConfig); |
| | | this.pageConfig.init(); |
| | | |
| | | // this.sqlConfig.setContextConfig(this.contextConfig); |
| | | // this.sqlConfig.init(); |
| | | } |
| | | |
| | | public PageConfig getPageConfig() { |
| | | return pageConfig; |
| | | } |
| | | |
| | | public void setPageConfig(PageConfig pageConfig) { |
| | | this.pageConfig = pageConfig; |
| | | } |
| | | |
| | | public ContextConfig getContextConfig() { |
| | | return contextConfig; |
| | | } |
| | | |
| | | public void setContextConfig(ContextConfig contextConfig) { |
| | | this.contextConfig = contextConfig; |
| | | } |
| | | |
| | | public ControllerConfig getControllerConfig() { |
| | | return controllerConfig; |
| | | } |
| | | |
| | | public void setControllerConfig(ControllerConfig controllerConfig) { |
| | | this.controllerConfig = controllerConfig; |
| | | } |
| | | |
| | | public DaoConfig getDaoConfig() { |
| | | return daoConfig; |
| | | } |
| | | |
| | | public void setDaoConfig(DaoConfig daoConfig) { |
| | | this.daoConfig = daoConfig; |
| | | } |
| | | |
| | | public ServiceConfig getServiceConfig() { |
| | | return serviceConfig; |
| | | } |
| | | |
| | | public void setServiceConfig(ServiceConfig serviceConfig) { |
| | | this.serviceConfig = serviceConfig; |
| | | } |
| | | |
| | | // public SqlConfig getSqlConfig() { |
| | | // return sqlConfig; |
| | | // } |
| | | // |
| | | // public void setSqlConfig(SqlConfig sqlConfig) { |
| | | // this.sqlConfig = sqlConfig; |
| | | // } |
| | | |
| | | public TableInfo getTableInfo() { |
| | | return tableInfo; |
| | | } |
| | | |
| | | public void setTableInfo(TableInfo tableInfo) { |
| | | this.tableInfo = tableInfo; |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | package com.mindant.generator.engine.base; |
| | | |
| | | import com.mindant.generator.util.ToolUtil; |
| | | import com.sun.javafx.PlatformUtil; |
| | | import org.beetl.core.Configuration; |
| | | import org.beetl.core.GroupTemplate; |
| | | import org.beetl.core.Template; |
| | | import org.beetl.core.resource.ClasspathResourceLoader; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.FileOutputStream; |
| | | import java.io.IOException; |
| | | import java.util.Properties; |
| | | |
| | | /** |
| | | * ADI项目模板生成 引擎 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-07 22:15 |
| | | */ |
| | | public abstract class GunsTemplateEngine extends AbstractTemplateEngine { |
| | | |
| | | private GroupTemplate groupTemplate; |
| | | |
| | | public GunsTemplateEngine() { |
| | | initBeetlEngine(); |
| | | } |
| | | |
| | | protected void initBeetlEngine() { |
| | | Properties properties = new Properties(); |
| | | properties.put("RESOURCE.root", ""); |
| | | properties.put("DELIMITER_STATEMENT_START", "<%"); |
| | | properties.put("DELIMITER_STATEMENT_END", "%>"); |
| | | properties.put("HTML_TAG_FLAG", "##"); |
| | | Configuration cfg = null; |
| | | try { |
| | | cfg = new Configuration(properties); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader(); |
| | | groupTemplate = new GroupTemplate(resourceLoader, cfg); |
| | | groupTemplate.registerFunctionPackage("tool", new ToolUtil()); |
| | | } |
| | | |
| | | protected void configTemplate(Template template) { |
| | | template.binding("controller", super.controllerConfig); |
| | | template.binding("context", super.contextConfig); |
| | | template.binding("dao", super.daoConfig); |
| | | template.binding("service", super.serviceConfig); |
| | | // template.binding("sqls", super.sqlConfig); |
| | | template.binding("table", super.tableInfo); |
| | | } |
| | | |
| | | protected void generateFile(String template, String filePath) { |
| | | Template pageTemplate = groupTemplate.getTemplate(template); |
| | | configTemplate(pageTemplate); |
| | | if (PlatformUtil.isWindows()) { |
| | | filePath = filePath.replaceAll("/+|\\\\+", "\\\\"); |
| | | } else { |
| | | filePath = filePath.replaceAll("/+|\\\\+", "/"); |
| | | } |
| | | File file = new File(filePath); |
| | | File parentFile = file.getParentFile(); |
| | | if (!parentFile.exists()) { |
| | | parentFile.mkdirs(); |
| | | } |
| | | FileOutputStream fileOutputStream = null; |
| | | try { |
| | | fileOutputStream = new FileOutputStream(file); |
| | | pageTemplate.renderTo(fileOutputStream); |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | fileOutputStream.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void start() { |
| | | //配置之间的相互依赖 |
| | | super.initConfig(); |
| | | |
| | | //生成模板 |
| | | if (super.contextConfig.getControllerSwitch()) { |
| | | generateController(); |
| | | } |
| | | if (super.contextConfig.getIndexPageSwitch()) { |
| | | generatePageHtml(); |
| | | } |
| | | if (super.contextConfig.getAddPageSwitch()) { |
| | | generatePageAddHtml(); |
| | | } |
| | | if (super.contextConfig.getEditPageSwitch()) { |
| | | generatePageEditHtml(); |
| | | } |
| | | if (super.contextConfig.getJsSwitch()) { |
| | | generatePageJs(); |
| | | } |
| | | if (super.contextConfig.getInfoJsSwitch()) { |
| | | generatePageInfoJs(); |
| | | } |
| | | if (super.contextConfig.getSqlSwitch()) { |
| | | generateSqls(); |
| | | } |
| | | } |
| | | |
| | | protected abstract void generatePageEditHtml(); |
| | | |
| | | protected abstract void generatePageAddHtml(); |
| | | |
| | | protected abstract void generatePageInfoJs(); |
| | | |
| | | protected abstract void generatePageJs(); |
| | | |
| | | protected abstract void generatePageHtml(); |
| | | |
| | | protected abstract void generateController(); |
| | | |
| | | protected abstract void generateSqls(); |
| | | |
| | | } |
New file |
| | |
| | | package com.mindant.generator.engine.config; |
| | | |
| | | |
| | | import com.mindant.generator.util.ToolUtil; |
| | | |
| | | /** |
| | | * 全局配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-08 20:21 |
| | | */ |
| | | public class ContextConfig { |
| | | |
| | | private String templatePrefixPath = "gunsTemplate/advanced"; |
| | | private String projectPath = "D:\\ideaSpace\\guns";//模板输出的项目目录 |
| | | private String dbName; //数据库名称 |
| | | private String bizChName; //业务名称 |
| | | private String bizEnName; //业务英文名称 |
| | | private String bizEnBigName;//业务英文名称(大写) |
| | | private String moduleName = "system"; //模块名称 |
| | | |
| | | private String proPackage = "com.mindant.admin"; |
| | | private String coreBasePackage = "com.mindant.core"; |
| | | private String modelPackageName = "com.mindant.modular." + moduleName + ".entity"; //model的包名 |
| | | private String modelMapperPackageName = "com.mindant.modular." + moduleName + ".dao"; //model的dao |
| | | private String entityName; //实体的名称 |
| | | |
| | | private Boolean controllerSwitch = true; //是否生成控制器代码开关 |
| | | private Boolean indexPageSwitch = true; //主页 |
| | | private Boolean addPageSwitch = true; //添加页面 |
| | | private Boolean editPageSwitch = true; //编辑页面 |
| | | private Boolean jsSwitch = true; //js |
| | | private Boolean infoJsSwitch = true; //详情页面js |
| | | private Boolean daoSwitch = true; //dao |
| | | private Boolean serviceSwitch = true; //service |
| | | private Boolean entitySwitch = true; //生成实体的开关 |
| | | private Boolean sqlSwitch = true; //生成sql的开关 |
| | | |
| | | public void init() { |
| | | if (entityName == null) { |
| | | entityName = bizEnBigName; |
| | | } |
| | | modelPackageName = proPackage + "." + "modular." + moduleName +".entity" ; |
| | | modelMapperPackageName = proPackage + "." + "modular." + moduleName + ".dao"; |
| | | } |
| | | |
| | | public String getDbName() { |
| | | return dbName; |
| | | } |
| | | |
| | | public void setDbName(String dbName) { |
| | | this.dbName = dbName; |
| | | } |
| | | |
| | | public String getBizEnBigName() { |
| | | return bizEnBigName; |
| | | } |
| | | |
| | | public void setBizEnBigName(String bizEnBigName) { |
| | | this.bizEnBigName = bizEnBigName; |
| | | } |
| | | |
| | | public String getBizChName() { |
| | | return bizChName; |
| | | } |
| | | |
| | | public void setBizChName(String bizChName) { |
| | | this.bizChName = bizChName; |
| | | } |
| | | |
| | | public String getBizEnName() { |
| | | return bizEnName; |
| | | } |
| | | |
| | | public void setBizEnName(String bizEnName) { |
| | | this.bizEnName = bizEnName; |
| | | this.bizEnBigName = ToolUtil.firstLetterToUpper(this.bizEnName); |
| | | } |
| | | |
| | | public String getProjectPath() { |
| | | return projectPath; |
| | | } |
| | | |
| | | public void setProjectPath(String projectPath) { |
| | | this.projectPath = projectPath; |
| | | } |
| | | |
| | | public String getModuleName() { |
| | | return moduleName; |
| | | } |
| | | |
| | | public void setModuleName(String moduleName) { |
| | | this.moduleName = moduleName; |
| | | } |
| | | |
| | | public Boolean getControllerSwitch() { |
| | | return controllerSwitch; |
| | | } |
| | | |
| | | public void setControllerSwitch(Boolean controllerSwitch) { |
| | | this.controllerSwitch = controllerSwitch; |
| | | } |
| | | |
| | | public Boolean getIndexPageSwitch() { |
| | | return indexPageSwitch; |
| | | } |
| | | |
| | | public void setIndexPageSwitch(Boolean indexPageSwitch) { |
| | | this.indexPageSwitch = indexPageSwitch; |
| | | } |
| | | |
| | | public Boolean getAddPageSwitch() { |
| | | return addPageSwitch; |
| | | } |
| | | |
| | | public void setAddPageSwitch(Boolean addPageSwitch) { |
| | | this.addPageSwitch = addPageSwitch; |
| | | } |
| | | |
| | | public Boolean getEditPageSwitch() { |
| | | return editPageSwitch; |
| | | } |
| | | |
| | | public void setEditPageSwitch(Boolean editPageSwitch) { |
| | | this.editPageSwitch = editPageSwitch; |
| | | } |
| | | |
| | | public Boolean getJsSwitch() { |
| | | return jsSwitch; |
| | | } |
| | | |
| | | public void setJsSwitch(Boolean jsSwitch) { |
| | | this.jsSwitch = jsSwitch; |
| | | } |
| | | |
| | | public Boolean getInfoJsSwitch() { |
| | | return infoJsSwitch; |
| | | } |
| | | |
| | | public void setInfoJsSwitch(Boolean infoJsSwitch) { |
| | | this.infoJsSwitch = infoJsSwitch; |
| | | } |
| | | |
| | | public Boolean getDaoSwitch() { |
| | | return daoSwitch; |
| | | } |
| | | |
| | | public void setDaoSwitch(Boolean daoSwitch) { |
| | | this.daoSwitch = daoSwitch; |
| | | } |
| | | |
| | | public Boolean getServiceSwitch() { |
| | | return serviceSwitch; |
| | | } |
| | | |
| | | public void setServiceSwitch(Boolean serviceSwitch) { |
| | | this.serviceSwitch = serviceSwitch; |
| | | } |
| | | |
| | | public String getTemplatePrefixPath() { |
| | | return templatePrefixPath; |
| | | } |
| | | |
| | | public void setTemplatePrefixPath(String templatePrefixPath) { |
| | | this.templatePrefixPath = templatePrefixPath; |
| | | } |
| | | |
| | | public String getModelPackageName() { |
| | | return modelPackageName; |
| | | } |
| | | |
| | | public void setModelPackageName(String modelPackageName) { |
| | | this.modelPackageName = modelPackageName; |
| | | } |
| | | |
| | | public String getEntityName() { |
| | | return entityName; |
| | | } |
| | | |
| | | public void setEntityName(String entityName) { |
| | | this.entityName = entityName; |
| | | } |
| | | |
| | | public String getModelMapperPackageName() { |
| | | return modelMapperPackageName; |
| | | } |
| | | |
| | | public void setModelMapperPackageName(String modelMapperPackageName) { |
| | | this.modelMapperPackageName = modelMapperPackageName; |
| | | } |
| | | |
| | | public Boolean getEntitySwitch() { |
| | | return entitySwitch; |
| | | } |
| | | |
| | | public void setEntitySwitch(Boolean entitySwitch) { |
| | | this.entitySwitch = entitySwitch; |
| | | } |
| | | |
| | | public Boolean getSqlSwitch() { |
| | | return sqlSwitch; |
| | | } |
| | | |
| | | public void setSqlSwitch(Boolean sqlSwitch) { |
| | | this.sqlSwitch = sqlSwitch; |
| | | } |
| | | |
| | | public String getProPackage() { |
| | | return proPackage; |
| | | } |
| | | |
| | | public void setProPackage(String proPackage) { |
| | | this.proPackage = proPackage; |
| | | } |
| | | |
| | | public String getCoreBasePackage() { |
| | | return coreBasePackage; |
| | | } |
| | | |
| | | public void setCoreBasePackage(String coreBasePackage) { |
| | | this.coreBasePackage = coreBasePackage; |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.engine.config; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 控制器模板生成的配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-07 22:12 |
| | | */ |
| | | public class ControllerConfig { |
| | | |
| | | private ContextConfig contextConfig; |
| | | |
| | | private String controllerPathTemplate; |
| | | private String packageName;//包名称 |
| | | private List<String> imports;//所引入的包 |
| | | |
| | | public void init() { |
| | | ArrayList<String> imports = new ArrayList<>(); |
| | | imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); |
| | | imports.add(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service" + ".I" + contextConfig.getEntityName() + "Service"); |
| | | this.imports = imports; |
| | | this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".controller"; |
| | | this.controllerPathTemplate = "\\src\\main\\java\\"+contextConfig.getProPackage().replaceAll("\\.","\\\\")+"\\modular\\" + contextConfig.getModuleName() + "\\controller\\{}Controller.java"; |
| | | } |
| | | |
| | | public String getPackageName() { |
| | | return packageName; |
| | | } |
| | | |
| | | public void setPackageName(String packageName) { |
| | | this.packageName = packageName; |
| | | } |
| | | |
| | | public List<String> getImports() { |
| | | return imports; |
| | | } |
| | | |
| | | public void setImports(List<String> imports) { |
| | | this.imports = imports; |
| | | } |
| | | |
| | | public String getControllerPathTemplate() { |
| | | return controllerPathTemplate; |
| | | } |
| | | |
| | | public void setControllerPathTemplate(String controllerPathTemplate) { |
| | | this.controllerPathTemplate = controllerPathTemplate; |
| | | } |
| | | |
| | | public ContextConfig getContextConfig() { |
| | | return contextConfig; |
| | | } |
| | | |
| | | public void setContextConfig(ContextConfig contextConfig) { |
| | | this.contextConfig = contextConfig; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.mindant.generator.engine.config; |
| | | |
| | | /** |
| | | * Dao模板生成的配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-07 22:12 |
| | | */ |
| | | public class DaoConfig { |
| | | |
| | | private ContextConfig contextConfig; |
| | | |
| | | private String daoPathTemplate; |
| | | private String xmlPathTemplate; |
| | | |
| | | private String packageName; |
| | | |
| | | public void init() { |
| | | this.daoPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\dao\\{}Dao.java"; |
| | | this.xmlPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\dao\\mapping\\{}Dao.xml"; |
| | | this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".mapper"; |
| | | } |
| | | |
| | | public String getPackageName() { |
| | | return packageName; |
| | | } |
| | | |
| | | public void setPackageName(String packageName) { |
| | | this.packageName = packageName; |
| | | } |
| | | |
| | | public String getDaoPathTemplate() { |
| | | return daoPathTemplate; |
| | | } |
| | | |
| | | public void setDaoPathTemplate(String daoPathTemplate) { |
| | | this.daoPathTemplate = daoPathTemplate; |
| | | } |
| | | |
| | | public String getXmlPathTemplate() { |
| | | return xmlPathTemplate; |
| | | } |
| | | |
| | | public void setXmlPathTemplate(String xmlPathTemplate) { |
| | | this.xmlPathTemplate = xmlPathTemplate; |
| | | } |
| | | |
| | | public ContextConfig getContextConfig() { |
| | | return contextConfig; |
| | | } |
| | | |
| | | public void setContextConfig(ContextConfig contextConfig) { |
| | | this.contextConfig = contextConfig; |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.engine.config; |
| | | |
| | | import com.baomidou.mybatisplus.activerecord.Model; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import lombok.Data; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * <p> |
| | | * 菜单表 |
| | | * </p> |
| | | * |
| | | * @author stylefeng |
| | | * @since 2017-07-11 |
| | | */ |
| | | @Data |
| | | @Accessors( chain = true) |
| | | public class Menu extends Model<Menu> { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | /** |
| | | * 数据库名 |
| | | */ |
| | | private String dbName; |
| | | /** |
| | | * 菜单编号 |
| | | */ |
| | | private String code; |
| | | /** |
| | | * 菜单父编号 |
| | | */ |
| | | @TableField( "p_code") |
| | | private String pCode; |
| | | /** |
| | | * 当前菜单的所有父菜单编号 |
| | | */ |
| | | @TableField( "p_codes") |
| | | private String pCodes; |
| | | /** |
| | | * 菜单名称 |
| | | */ |
| | | private String name; |
| | | /** |
| | | * 菜单图标 |
| | | */ |
| | | private String icon; |
| | | /** |
| | | * url地址 |
| | | */ |
| | | private String url; |
| | | /** |
| | | * 菜单排序号 |
| | | */ |
| | | private Integer num; |
| | | /** |
| | | * 菜单层级 |
| | | */ |
| | | private Integer levels; |
| | | /** |
| | | * 是否是菜单(1:是 0:不是) |
| | | */ |
| | | @TableField( "is_menu") |
| | | private Integer isMenu; |
| | | /** |
| | | * 备注 |
| | | */ |
| | | private String tips; |
| | | /** |
| | | * 菜单状态 : 1:启用 0:不启用 |
| | | */ |
| | | private Integer status; |
| | | |
| | | @Override |
| | | protected Serializable pkVal() { |
| | | return this.id; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.mindant.generator.engine.config; |
| | | |
| | | /** |
| | | * 页面 模板生成的配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-07 22:12 |
| | | */ |
| | | public class PageConfig { |
| | | |
| | | private ContextConfig contextConfig; |
| | | |
| | | private String pagePathTemplate; |
| | | private String pageAddPathTemplate; |
| | | private String pageEditPathTemplate; |
| | | private String pageJsPathTemplate; |
| | | private String pageInfoJsPathTemplate; |
| | | |
| | | public void init() { |
| | | pagePathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}.html"; |
| | | pageAddPathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}_add.html"; |
| | | pageEditPathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}_edit.html"; |
| | | pageJsPathTemplate = "\\src\\main\\webapp\\static\\modular\\" + contextConfig.getModuleName() + "\\{}\\{}.js"; |
| | | pageInfoJsPathTemplate = "\\src\\main\\webapp\\static\\modular\\" + contextConfig.getModuleName() + "\\{}\\{}_info.js"; |
| | | } |
| | | |
| | | public String getPagePathTemplate() { |
| | | return pagePathTemplate; |
| | | } |
| | | |
| | | public void setPagePathTemplate(String pagePathTemplate) { |
| | | this.pagePathTemplate = pagePathTemplate; |
| | | } |
| | | |
| | | public String getPageJsPathTemplate() { |
| | | return pageJsPathTemplate; |
| | | } |
| | | |
| | | public void setPageJsPathTemplate(String pageJsPathTemplate) { |
| | | this.pageJsPathTemplate = pageJsPathTemplate; |
| | | } |
| | | |
| | | public String getPageAddPathTemplate() { |
| | | return pageAddPathTemplate; |
| | | } |
| | | |
| | | public void setPageAddPathTemplate(String pageAddPathTemplate) { |
| | | this.pageAddPathTemplate = pageAddPathTemplate; |
| | | } |
| | | |
| | | public String getPageEditPathTemplate() { |
| | | return pageEditPathTemplate; |
| | | } |
| | | |
| | | public void setPageEditPathTemplate(String pageEditPathTemplate) { |
| | | this.pageEditPathTemplate = pageEditPathTemplate; |
| | | } |
| | | |
| | | public String getPageInfoJsPathTemplate() { |
| | | return pageInfoJsPathTemplate; |
| | | } |
| | | |
| | | public void setPageInfoJsPathTemplate(String pageInfoJsPathTemplate) { |
| | | this.pageInfoJsPathTemplate = pageInfoJsPathTemplate; |
| | | } |
| | | |
| | | public ContextConfig getContextConfig() { |
| | | return contextConfig; |
| | | } |
| | | |
| | | public void setContextConfig(ContextConfig contextConfig) { |
| | | this.contextConfig = contextConfig; |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.engine.config; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Service模板生成的配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-07 22:12 |
| | | */ |
| | | public class ServiceConfig { |
| | | |
| | | private ContextConfig contextConfig; |
| | | |
| | | private String servicePathTemplate; |
| | | private String serviceImplPathTemplate; |
| | | |
| | | private String packageName; |
| | | |
| | | private List<String> serviceInterfaceImports; |
| | | private List<String> serviceImplImports; |
| | | |
| | | public void init() { |
| | | ArrayList<String> imports = new ArrayList<>(); |
| | | imports.add("org.springframework.stereotype.Service"); |
| | | imports.add("com.baomidou.mybatisplus.service.impl.ServiceImpl"); |
| | | imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); |
| | | imports.add(contextConfig.getModelMapperPackageName() + "." + contextConfig.getEntityName() + "Mapper"); |
| | | imports.add(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.I" + contextConfig.getBizEnBigName() + "Service"); |
| | | this.serviceImplImports = imports; |
| | | |
| | | ArrayList<String> interfaceImports = new ArrayList<>(); |
| | | interfaceImports.add("com.baomidou.mybatisplus.service.IService"); |
| | | interfaceImports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); |
| | | this.serviceInterfaceImports = interfaceImports; |
| | | |
| | | this.servicePathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\service\\I{}Service.java"; |
| | | this.serviceImplPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\service\\impl\\{}ServiceImpl.java"; |
| | | this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service"; |
| | | } |
| | | |
| | | |
| | | public String getServicePathTemplate() { |
| | | return servicePathTemplate; |
| | | } |
| | | |
| | | public void setServicePathTemplate(String servicePathTemplate) { |
| | | this.servicePathTemplate = servicePathTemplate; |
| | | } |
| | | |
| | | public String getPackageName() { |
| | | return packageName; |
| | | } |
| | | |
| | | public void setPackageName(String packageName) { |
| | | this.packageName = packageName; |
| | | } |
| | | |
| | | public String getServiceImplPathTemplate() { |
| | | return serviceImplPathTemplate; |
| | | } |
| | | |
| | | public void setServiceImplPathTemplate(String serviceImplPathTemplate) { |
| | | this.serviceImplPathTemplate = serviceImplPathTemplate; |
| | | } |
| | | |
| | | public List<String> getServiceImplImports() { |
| | | return serviceImplImports; |
| | | } |
| | | |
| | | public void setServiceImplImports(List<String> serviceImplImports) { |
| | | this.serviceImplImports = serviceImplImports; |
| | | } |
| | | |
| | | public ContextConfig getContextConfig() { |
| | | return contextConfig; |
| | | } |
| | | |
| | | public void setContextConfig(ContextConfig contextConfig) { |
| | | this.contextConfig = contextConfig; |
| | | } |
| | | |
| | | public List<String> getServiceInterfaceImports() { |
| | | return serviceInterfaceImports; |
| | | } |
| | | |
| | | public void setServiceInterfaceImports(List<String> serviceInterfaceImports) { |
| | | this.serviceInterfaceImports = serviceInterfaceImports; |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.exception; |
| | | |
| | | /** |
| | | * 封装guns的异常 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017/12/28 下午10:32 |
| | | */ |
| | | public class GunsException extends RuntimeException { |
| | | |
| | | private Integer code; |
| | | |
| | | private String message; |
| | | |
| | | public GunsException(ServiceExceptionEnum serviceExceptionEnum) { |
| | | this.code = serviceExceptionEnum.getCode(); |
| | | this.message = serviceExceptionEnum.getMessage(); |
| | | } |
| | | |
| | | public GunsException(String message) { |
| | | this.code = GunsExceptionEnum.SERVER_ERROR.getCode(); |
| | | this.message = message; |
| | | } |
| | | |
| | | public GunsException(Integer code, String message) { |
| | | this.code = code; |
| | | this.message = message; |
| | | } |
| | | |
| | | public Integer getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(Integer code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | @Override |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.exception; |
| | | |
| | | /** |
| | | * Guns异常枚举 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017/12/28 下午10:33 |
| | | */ |
| | | public enum GunsExceptionEnum implements ServiceExceptionEnum { |
| | | |
| | | /** |
| | | * 其他 |
| | | */ |
| | | INVLIDE_DATE_STRING(400, "输入日期格式不对"), |
| | | |
| | | /** |
| | | * 其他 |
| | | */ |
| | | WRITE_ERROR(500, "渲染界面错误"), |
| | | |
| | | /** |
| | | * 文件上传 |
| | | */ |
| | | FILE_READING_ERROR(400, "FILE_READING_ERROR!"), |
| | | FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), |
| | | |
| | | /** |
| | | * 错误的请求 |
| | | */ |
| | | REQUEST_NULL(400, "请求有错误"), |
| | | CUSTOMER_NOT_EXITS(4000, "客服不存在"), |
| | | SERVER_ERROR(500, "服务器异常"); |
| | | |
| | | GunsExceptionEnum(int code, String message) { |
| | | this.code = code; |
| | | this.message = message; |
| | | } |
| | | |
| | | private Integer code; |
| | | |
| | | private String message; |
| | | |
| | | @Override |
| | | public Integer getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(Integer code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | @Override |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | } |
New file |
| | |
| | | package com.mindant.generator.exception; |
| | | |
| | | /** |
| | | * 抽象接口 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-12-28-下午10:27 |
| | | */ |
| | | public interface ServiceExceptionEnum { |
| | | |
| | | /** |
| | | * 获取异常编码 |
| | | */ |
| | | Integer getCode(); |
| | | |
| | | /** |
| | | * 获取异常信息 |
| | | */ |
| | | String getMessage(); |
| | | } |
New file |
| | |
| | | package com.mindant.generator.util; |
| | | |
| | | |
| | | |
| | | |
| | | import java.lang.reflect.Array; |
| | | import java.util.*; |
| | | import java.util.Map.Entry; |
| | | |
| | | /** |
| | | * 集合相关工具类,包括数组 |
| | | * |
| | | * @author xiaoleilu |
| | | * |
| | | */ |
| | | public class CollectionKit { |
| | | |
| | | private CollectionKit() { |
| | | // 静态类不可实例化 |
| | | } |
| | | |
| | | /** |
| | | * 以 conjunction 为分隔符将集合转换为字符串 |
| | | * |
| | | * @param <T> 被处理的集合 |
| | | * @param collection 集合 |
| | | * @param conjunction 分隔符 |
| | | * @return 连接后的字符串 |
| | | */ |
| | | public static <T> String join(Iterable<T> collection, String conjunction) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | boolean isFirst = true; |
| | | for (T item : collection) { |
| | | if (isFirst) { |
| | | isFirst = false; |
| | | } else { |
| | | sb.append(conjunction); |
| | | } |
| | | sb.append(item); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 以 conjunction 为分隔符将数组转换为字符串 |
| | | * |
| | | * @param <T> 被处理的集合 |
| | | * @param array 数组 |
| | | * @param conjunction 分隔符 |
| | | * @return 连接后的字符串 |
| | | */ |
| | | public static <T> String join(T[] array, String conjunction) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | boolean isFirst = true; |
| | | for (T item : array) { |
| | | if (isFirst) { |
| | | isFirst = false; |
| | | } else { |
| | | sb.append(conjunction); |
| | | } |
| | | sb.append(item); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 将多个集合排序并显示不同的段落(分页) |
| | | * @param pageNo 页码 |
| | | * @param numPerPage 每页的条目数 |
| | | * @param comparator 比较器 |
| | | * @param colls 集合数组 |
| | | * @return 分业后的段落内容 |
| | | */ |
| | | // @SafeVarargs |
| | | // public static <T> List<T> sortPageAll2(int pageNo, int numPerPage, Comparator<T> comparator, Collection<T>... colls) { |
| | | // BoundedPriorityQueue<T> queue = new BoundedPriorityQueue<T>(pageNo * numPerPage); |
| | | // for (Collection<T> coll : colls) { |
| | | // queue.addAll(coll); |
| | | // } |
| | | // |
| | | // //第一页且数目少于第一页显示的数目 |
| | | // if(pageNo <=1 && queue.size() <= numPerPage) { |
| | | // return queue.toList(); |
| | | // } |
| | | // |
| | | // final int[] startEnd = PageKit.transToStartEnd(pageNo, numPerPage); |
| | | // return queue.toList().subList(startEnd[0], startEnd[1]); |
| | | // } |
| | | |
| | | /** |
| | | * 将Set排序(根据Entry的值) |
| | | * |
| | | * @param set 被排序的Set |
| | | * @return 排序后的Set |
| | | */ |
| | | public static List<Entry<Long, Long>> sortEntrySetToList(Set<Entry<Long, Long>> set) { |
| | | List<Entry<Long, Long>> list = new LinkedList<Entry<Long, Long>>(set); |
| | | Collections.sort(list, new Comparator<Entry<Long, Long>>(){ |
| | | |
| | | @Override |
| | | public int compare(Entry<Long, Long> o1, Entry<Long, Long> o2) { |
| | | if (o1.getValue() > o2.getValue()){ |
| | | return 1; |
| | | } |
| | | if (o1.getValue() < o2.getValue()){ |
| | | return -1; |
| | | } |
| | | return 0; |
| | | } |
| | | }); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 切取部分数据 |
| | | * |
| | | * @param <T> 集合元素类型 |
| | | * @param surplusAlaDatas 原数据 |
| | | * @param partSize 每部分数据的长度 |
| | | * @return 切取出的数据或null |
| | | */ |
| | | public static <T> List<T> popPart(Stack<T> surplusAlaDatas, int partSize) { |
| | | if (surplusAlaDatas == null || surplusAlaDatas.size() <= 0){ |
| | | return null; |
| | | } |
| | | |
| | | final List<T> currentAlaDatas = new ArrayList<T>(); |
| | | int size = surplusAlaDatas.size(); |
| | | // 切割 |
| | | if (size > partSize) { |
| | | for (int i = 0; i < partSize; i++) { |
| | | currentAlaDatas.add(surplusAlaDatas.pop()); |
| | | } |
| | | } else { |
| | | for (int i = 0; i < size; i++) { |
| | | currentAlaDatas.add(surplusAlaDatas.pop()); |
| | | } |
| | | } |
| | | return currentAlaDatas; |
| | | } |
| | | |
| | | /** |
| | | * 切取部分数据 |
| | | * |
| | | * @param <T> 集合元素类型 |
| | | * @param surplusAlaDatas 原数据 |
| | | * @param partSize 每部分数据的长度 |
| | | * @return 切取出的数据或null |
| | | */ |
| | | public static <T> List<T> popPart(Deque<T> surplusAlaDatas, int partSize) { |
| | | if (surplusAlaDatas == null || surplusAlaDatas.size() <= 0){ |
| | | return null; |
| | | } |
| | | |
| | | final List<T> currentAlaDatas = new ArrayList<T>(); |
| | | int size = surplusAlaDatas.size(); |
| | | // 切割 |
| | | if (size > partSize) { |
| | | for (int i = 0; i < partSize; i++) { |
| | | currentAlaDatas.add(surplusAlaDatas.pop()); |
| | | } |
| | | } else { |
| | | for (int i = 0; i < size; i++) { |
| | | currentAlaDatas.add(surplusAlaDatas.pop()); |
| | | } |
| | | } |
| | | return currentAlaDatas; |
| | | } |
| | | |
| | | /** |
| | | * 新建一个HashMap |
| | | * |
| | | * @return HashMap对象 |
| | | */ |
| | | public static <T, K> HashMap<T, K> newHashMap() { |
| | | return new HashMap<T, K>(); |
| | | } |
| | | |
| | | /** |
| | | * 新建一个HashMap |
| | | * @param size 初始大小,由于默认负载因子0.75,传入的size会实际初始大小为size / 0.75 |
| | | * @return HashMap对象 |
| | | */ |
| | | public static <T, K> HashMap<T, K> newHashMap(int size) { |
| | | return new HashMap<T, K>((int)(size / 0.75)); |
| | | } |
| | | |
| | | /** |
| | | * 新建一个HashSet |
| | | * |
| | | * @return HashSet对象 |
| | | */ |
| | | public static <T> HashSet<T> newHashSet() { |
| | | return new HashSet<T>(); |
| | | } |
| | | |
| | | /** |
| | | * 新建一个HashSet |
| | | * |
| | | * @return HashSet对象 |
| | | */ |
| | | @SafeVarargs |
| | | public static <T> HashSet<T> newHashSet(T... ts) { |
| | | HashSet<T> set = new HashSet<T>(); |
| | | for (T t : ts) { |
| | | set.add(t); |
| | | } |
| | | return set; |
| | | } |
| | | |
| | | /** |
| | | * 新建一个ArrayList |
| | | * |
| | | * @return ArrayList对象 |
| | | */ |
| | | public static <T> ArrayList<T> newArrayList() { |
| | | return new ArrayList<T>(); |
| | | } |
| | | |
| | | /** |
| | | * 新建一个ArrayList |
| | | * |
| | | * @return ArrayList对象 |
| | | */ |
| | | @SafeVarargs |
| | | public static <T> ArrayList<T> newArrayList(T... values) { |
| | | return new ArrayList<T>(Arrays.asList(values)); |
| | | } |
| | | |
| | | /** |
| | | * 将新元素添加到已有数组中<br/> |
| | | * 添加新元素会生成一个新的数组,不影响原数组 |
| | | * |
| | | * @param buffer 已有数组 |
| | | * @param newElement 新元素 |
| | | * @return 新数组 |
| | | */ |
| | | public static <T> T[] append(T[] buffer, T newElement) { |
| | | T[] t = resize(buffer, buffer.length + 1, newElement.getClass()); |
| | | t[buffer.length] = newElement; |
| | | return t; |
| | | } |
| | | |
| | | /** |
| | | * 生成一个新的重新设置大小的数组 |
| | | * |
| | | * @param buffer 原数组 |
| | | * @param newSize 新的数组大小 |
| | | * @param componentType 数组元素类型 |
| | | * @return 调整后的新数组 |
| | | */ |
| | | public static <T> T[] resize(T[] buffer, int newSize, Class<?> componentType) { |
| | | T[] newArray = newArray(componentType, newSize); |
| | | System.arraycopy(buffer, 0, newArray, 0, buffer.length >= newSize ? newSize : buffer.length); |
| | | return newArray; |
| | | } |
| | | |
| | | /** |
| | | * 新建一个空数组 |
| | | * @param componentType 元素类型 |
| | | * @param newSize 大小 |
| | | * @return 空数组 |
| | | */ |
| | | @SuppressWarnings("unchecked") |
| | | public static <T> T[] newArray(Class<?> componentType, int newSize) { |
| | | return (T[]) Array.newInstance(componentType, newSize); |
| | | } |
| | | |
| | | /** |
| | | * 生成一个新的重新设置大小的数组<br/> |
| | | * 新数组的类型为原数组的类型 |
| | | * |
| | | * @param buffer 原数组 |
| | | * @param newSize 新的数组大小 |
| | | * @return 调整后的新数组 |
| | | */ |
| | | public static <T> T[] resize(T[] buffer, int newSize) { |
| | | return resize(buffer, newSize, buffer.getClass().getComponentType()); |
| | | } |
| | | |
| | | /** |
| | | * 将多个数组合并在一起<br> |
| | | * 忽略null的数组 |
| | | * |
| | | * @param arrays 数组集合 |
| | | * @return 合并后的数组 |
| | | */ |
| | | @SafeVarargs |
| | | public static <T> T[] addAll(T[]... arrays) { |
| | | if (arrays.length == 1) { |
| | | return arrays[0]; |
| | | } |
| | | |
| | | int length = 0; |
| | | for (T[] array : arrays) { |
| | | if(array == null) { |
| | | continue; |
| | | } |
| | | length += array.length; |
| | | } |
| | | T[] result = newArray(arrays.getClass().getComponentType().getComponentType(), length); |
| | | |
| | | length = 0; |
| | | for (T[] array : arrays) { |
| | | if(array == null) { |
| | | continue; |
| | | } |
| | | System.arraycopy(array, 0, result, length, array.length); |
| | | length += array.length; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 克隆数组 |
| | | * @param array 被克隆的数组 |
| | | * @return 新数组 |
| | | */ |
| | | public static <T> T[] clone(T[] array) { |
| | | if (array == null) { |
| | | return null; |
| | | } |
| | | return array.clone(); |
| | | } |
| | | |
| | | /** |
| | | * 生成一个数字列表<br> |
| | | * 自动判定正序反序 |
| | | * @param excludedEnd 结束的数字(不包含) |
| | | * @return 数字列表 |
| | | */ |
| | | public static int[] range(int excludedEnd) { |
| | | return range(0, excludedEnd, 1); |
| | | } |
| | | |
| | | /** |
| | | * 生成一个数字列表<br> |
| | | * 自动判定正序反序 |
| | | * @param includedStart 开始的数字(包含) |
| | | * @param excludedEnd 结束的数字(不包含) |
| | | * @return 数字列表 |
| | | */ |
| | | public static int[] range(int includedStart, int excludedEnd) { |
| | | return range(includedStart, excludedEnd, 1); |
| | | } |
| | | |
| | | /** |
| | | * 生成一个数字列表<br> |
| | | * 自动判定正序反序 |
| | | * @param includedStart 开始的数字(包含) |
| | | * @param excludedEnd 结束的数字(不包含) |
| | | * @param step 步进 |
| | | * @return 数字列表 |
| | | */ |
| | | public static int[] range(int includedStart, int excludedEnd, int step) { |
| | | if(includedStart > excludedEnd) { |
| | | int tmp = includedStart; |
| | | includedStart = excludedEnd; |
| | | excludedEnd = tmp; |
| | | } |
| | | |
| | | if(step <=0) { |
| | | step = 1; |
| | | } |
| | | |
| | | int deviation = excludedEnd - includedStart; |
| | | int length = deviation / step; |
| | | if(deviation % step != 0) { |
| | | length += 1; |
| | | } |
| | | int[] range = new int[length]; |
| | | for(int i = 0; i < length; i++) { |
| | | range[i] = includedStart; |
| | | includedStart += step; |
| | | } |
| | | return range; |
| | | } |
| | | |
| | | /** |
| | | * 截取数组的部分 |
| | | * @param list 被截取的数组 |
| | | * @param start 开始位置(包含) |
| | | * @param end 结束位置(不包含) |
| | | * @return 截取后的数组,当开始位置超过最大时,返回null |
| | | */ |
| | | public static <T> List<T> sub(List<T> list, int start, int end) { |
| | | if(list == null || list.isEmpty()) { |
| | | return null; |
| | | } |
| | | |
| | | if(start < 0) { |
| | | start = 0; |
| | | } |
| | | if(end < 0) { |
| | | end = 0; |
| | | } |
| | | |
| | | if(start > end) { |
| | | int tmp = start; |
| | | start = end; |
| | | end = tmp; |
| | | } |
| | | |
| | | final int size = list.size(); |
| | | if(end > size) { |
| | | if(start >= size) { |
| | | return null; |
| | | } |
| | | end = size; |
| | | } |
| | | |
| | | return list.subList(start, end); |
| | | } |
| | | |
| | | /** |
| | | * 截取集合的部分 |
| | | * @param list 被截取的数组 |
| | | * @param start 开始位置(包含) |
| | | * @param end 结束位置(不包含) |
| | | * @return 截取后的数组,当开始位置超过最大时,返回null |
| | | */ |
| | | public static <T> List<T> sub(Collection<T> list, int start, int end) { |
| | | if(list == null || list.isEmpty()) { |
| | | return null; |
| | | } |
| | | |
| | | return sub(new ArrayList<T>(list), start, end); |
| | | } |
| | | |
| | | /** |
| | | * 数组是否为空 |
| | | * @param array 数组 |
| | | * @return 是否为空 |
| | | */ |
| | | public static <T> boolean isEmpty(T[] array) { |
| | | return array == null || array.length == 0; |
| | | } |
| | | |
| | | /** |
| | | * 数组是否为非空 |
| | | * @param array 数组 |
| | | * @return 是否为非空 |
| | | */ |
| | | public static <T> boolean isNotEmpty(T[] array) { |
| | | return false == isEmpty(array); |
| | | } |
| | | |
| | | /** |
| | | * 集合是否为空 |
| | | * @param collection 集合 |
| | | * @return 是否为空 |
| | | */ |
| | | public static boolean isEmpty(Collection<?> collection) { |
| | | return collection == null || collection.isEmpty(); |
| | | } |
| | | |
| | | /** |
| | | * 集合是否为非空 |
| | | * @param collection 集合 |
| | | * @return 是否为非空 |
| | | */ |
| | | public static boolean isNotEmpty(Collection<?> collection) { |
| | | return false == isEmpty(collection); |
| | | } |
| | | |
| | | /** |
| | | * Map是否为空 |
| | | * @param map 集合 |
| | | * @return 是否为空 |
| | | */ |
| | | public static boolean isEmpty(Map<?, ?> map) { |
| | | return map == null || map.isEmpty(); |
| | | } |
| | | |
| | | /** |
| | | * Map是否为非空 |
| | | * @param map 集合 |
| | | * @return 是否为非空 |
| | | */ |
| | | public static <T> boolean isNotEmpty(Map<?, ?> map) { |
| | | return false == isEmpty(map); |
| | | } |
| | | |
| | | /** |
| | | * 映射键值(参考Python的zip()函数)<br> |
| | | * 例如:<br> |
| | | * keys = [a,b,c,d]<br> |
| | | * values = [1,2,3,4]<br> |
| | | * 则得到的Map是 {a=1, b=2, c=3, d=4}<br> |
| | | * 如果两个数组长度不同,则只对应最短部分 |
| | | * @param keys 键列表 |
| | | * @param values 值列表 |
| | | * @return Map |
| | | */ |
| | | public static <T, K> Map<T, K> zip(T[] keys, K[] values) { |
| | | if(isEmpty(keys) || isEmpty(values)) { |
| | | return null; |
| | | } |
| | | |
| | | final int size = Math.min(keys.length, values.length); |
| | | final Map<T, K> map = new HashMap<T, K>((int)(size / 0.75)); |
| | | for(int i = 0; i < size; i++) { |
| | | map.put(keys[i], values[i]); |
| | | } |
| | | |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 映射键值(参考Python的zip()函数)<br> |
| | | * 例如:<br> |
| | | * keys = a,b,c,d<br> |
| | | * values = 1,2,3,4<br> |
| | | * delimiter = , |
| | | * 则得到的Map是 {a=1, b=2, c=3, d=4}<br> |
| | | * 如果两个数组长度不同,则只对应最短部分 |
| | | * @param keys 键列表 |
| | | * @param values 值列表 |
| | | * @return Map |
| | | */ |
| | | public static Map<String, String> zip(String keys, String values, String delimiter) { |
| | | return zip(StrKit.split(keys, delimiter), StrKit.split(values, delimiter)); |
| | | } |
| | | |
| | | /** |
| | | * 映射键值(参考Python的zip()函数)<br> |
| | | * 例如:<br> |
| | | * keys = [a,b,c,d]<br> |
| | | * values = [1,2,3,4]<br> |
| | | * 则得到的Map是 {a=1, b=2, c=3, d=4}<br> |
| | | * 如果两个数组长度不同,则只对应最短部分 |
| | | * @param keys 键列表 |
| | | * @param values 值列表 |
| | | * @return Map |
| | | */ |
| | | public static <T, K> Map<T, K> zip(Collection<T> keys, Collection<K> values) { |
| | | if(isEmpty(keys) || isEmpty(values)) { |
| | | return null; |
| | | } |
| | | |
| | | final List<T> keyList = new ArrayList<T>(keys); |
| | | final List<K> valueList = new ArrayList<K>(values); |
| | | |
| | | final int size = Math.min(keys.size(), values.size()); |
| | | final Map<T, K> map = new HashMap<T, K>((int)(size / 0.75)); |
| | | for(int i = 0; i < size; i++) { |
| | | map.put(keyList.get(i), valueList.get(i)); |
| | | } |
| | | |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 数组中是否包含元素 |
| | | * @param array 数组 |
| | | * @param value 被检查的元素 |
| | | * @return 是否包含 |
| | | */ |
| | | public static <T> boolean contains(T[] array, T value) { |
| | | final Class<?> componetType = array.getClass().getComponentType(); |
| | | boolean isPrimitive = false; |
| | | if(null != componetType) { |
| | | isPrimitive = componetType.isPrimitive(); |
| | | } |
| | | for (T t : array) { |
| | | if(t == value) { |
| | | return true; |
| | | }else if(false == isPrimitive && null != value && value.equals(t)) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 将Entry集合转换为HashMap |
| | | * @param entryCollection entry集合 |
| | | * @return Map |
| | | */ |
| | | public static <T, K> HashMap<T, K> toMap(Collection<Entry<T, K>> entryCollection) { |
| | | HashMap<T,K> map = new HashMap<T, K>(); |
| | | for (Entry<T, K> entry : entryCollection) { |
| | | map.put(entry.getKey(), entry.getValue()); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 将集合转换为排序后的TreeSet |
| | | * @param collection 集合 |
| | | * @param comparator 比较器 |
| | | * @return treeSet |
| | | */ |
| | | public static <T> TreeSet<T> toTreeSet(Collection<T> collection, Comparator<T> comparator){ |
| | | final TreeSet<T> treeSet = new TreeSet<T>(comparator); |
| | | for (T t : collection) { |
| | | treeSet.add(t); |
| | | } |
| | | return treeSet; |
| | | } |
| | | |
| | | /** |
| | | * 排序集合 |
| | | * @param collection 集合 |
| | | * @param comparator 比较器 |
| | | * @return treeSet |
| | | */ |
| | | public static <T> List<T> sort(Collection<T> collection, Comparator<T> comparator){ |
| | | List<T> list = new ArrayList<T>(collection); |
| | | Collections.sort(list, comparator); |
| | | return list; |
| | | } |
| | | |
| | | //------------------------------------------------------------------- 基本类型的数组转换为包装类型数组 |
| | | /** |
| | | * 将基本类型数组包装为包装类型 |
| | | * @param values 基本类型数组 |
| | | * @return 包装类型数组 |
| | | */ |
| | | public static Integer[] wrap(int... values){ |
| | | final int length = values.length; |
| | | Integer[] array = new Integer[length]; |
| | | for(int i = 0; i < length; i++){ |
| | | array[i] = values[i]; |
| | | } |
| | | return array; |
| | | } |
| | | |
| | | /** |
| | | * 将基本类型数组包装为包装类型 |
| | | * @param values 基本类型数组 |
| | | * @return 包装类型数组 |
| | | */ |
| | | public static Long[] wrap(long... values){ |
| | | final int length = values.length; |
| | | Long[] array = new Long[length]; |
| | | for(int i = 0; i < length; i++){ |
| | | array[i] = values[i]; |
| | | } |
| | | return array; |
| | | } |
| | | |
| | | /** |
| | | * 将基本类型数组包装为包装类型 |
| | | * @param values 基本类型数组 |
| | | * @return 包装类型数组 |
| | | */ |
| | | public static Character[] wrap(char... values){ |
| | | final int length = values.length; |
| | | Character[] array = new Character[length]; |
| | | for(int i = 0; i < length; i++){ |
| | | array[i] = values[i]; |
| | | } |
| | | return array; |
| | | } |
| | | |
| | | /** |
| | | * 将基本类型数组包装为包装类型 |
| | | * @param values 基本类型数组 |
| | | * @return 包装类型数组 |
| | | */ |
| | | public static Byte[] wrap(byte... values){ |
| | | final int length = values.length; |
| | | Byte[] array = new Byte[length]; |
| | | for(int i = 0; i < length; i++){ |
| | | array[i] = values[i]; |
| | | } |
| | | return array; |
| | | } |
| | | |
| | | /** |
| | | * 将基本类型数组包装为包装类型 |
| | | * @param values 基本类型数组 |
| | | * @return 包装类型数组 |
| | | */ |
| | | public static Short[] wrap(short... values){ |
| | | final int length = values.length; |
| | | Short[] array = new Short[length]; |
| | | for(int i = 0; i < length; i++){ |
| | | array[i] = values[i]; |
| | | } |
| | | return array; |
| | | } |
| | | |
| | | /** |
| | | * 将基本类型数组包装为包装类型 |
| | | * @param values 基本类型数组 |
| | | * @return 包装类型数组 |
| | | */ |
| | | public static Float[] wrap(float... values){ |
| | | final int length = values.length; |
| | | Float[] array = new Float[length]; |
| | | for(int i = 0; i < length; i++){ |
| | | array[i] = values[i]; |
| | | } |
| | | return array; |
| | | } |
| | | |
| | | /** |
| | | * 将基本类型数组包装为包装类型 |
| | | * @param values 基本类型数组 |
| | | * @return 包装类型数组 |
| | | */ |
| | | public static Double[] wrap(double... values){ |
| | | final int length = values.length; |
| | | Double[] array = new Double[length]; |
| | | for(int i = 0; i < length; i++){ |
| | | array[i] = values[i]; |
| | | } |
| | | return array; |
| | | } |
| | | |
| | | /** |
| | | * 将基本类型数组包装为包装类型 |
| | | * @param values 基本类型数组 |
| | | * @return 包装类型数组 |
| | | */ |
| | | public static Boolean[] wrap(boolean... values){ |
| | | final int length = values.length; |
| | | Boolean[] array = new Boolean[length]; |
| | | for(int i = 0; i < length; i++){ |
| | | array[i] = values[i]; |
| | | } |
| | | return array; |
| | | } |
| | | |
| | | /** |
| | | * 判定给定对象是否为数组类型 |
| | | * @param obj 对象 |
| | | * @return 是否为数组类型 |
| | | */ |
| | | public static boolean isArray(Object obj){ |
| | | return obj.getClass().isArray(); |
| | | } |
| | | |
| | | /** |
| | | * 数组或集合转String |
| | | * |
| | | * @param obj 集合或数组对象 |
| | | * @return 数组字符串,与集合转字符串格式相同 |
| | | */ |
| | | public static String toString(Object obj) { |
| | | if (null == obj) { |
| | | return null; |
| | | } |
| | | if (isArray(obj)) { |
| | | try { |
| | | return Arrays.deepToString((Object[]) obj); |
| | | } catch (Exception e) { |
| | | final String className = obj.getClass().getComponentType().getName(); |
| | | switch (className) { |
| | | case "long": |
| | | return Arrays.toString((long[]) obj); |
| | | case "int": |
| | | return Arrays.toString((int[]) obj); |
| | | case "short": |
| | | return Arrays.toString((short[]) obj); |
| | | case "char": |
| | | return Arrays.toString((char[]) obj); |
| | | case "byte": |
| | | return Arrays.toString((byte[]) obj); |
| | | case "boolean": |
| | | return Arrays.toString((boolean[]) obj); |
| | | case "float": |
| | | return Arrays.toString((float[]) obj); |
| | | case "double": |
| | | return Arrays.toString((double[]) obj); |
| | | default: |
| | | try { |
| | | throw new Exception(e); |
| | | } catch (Exception exception) { |
| | | exception.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return obj.toString(); |
| | | } |
| | | } |
generator/src/main/java/com/mindant/generator/util/DateUtil.java
generator/src/main/java/com/mindant/generator/util/FileUtil.java
generator/src/main/java/com/mindant/generator/util/StrKit.java
generator/src/main/java/com/mindant/generator/util/ToolUtil.java
generator/src/main/resources/gunsTemplate/advanced/Controller.java.btl
generator/src/main/resources/gunsTemplate/advanced/entity.java.vm
generator/src/main/resources/gunsTemplate/advanced/mapper.java.vm
generator/src/main/resources/gunsTemplate/advanced/mapper.xml.vm
generator/src/main/resources/gunsTemplate/advanced/menu_sql.sql.btl
generator/src/main/resources/gunsTemplate/advanced/page.html.btl
generator/src/main/resources/gunsTemplate/advanced/page.js.btl
generator/src/main/resources/gunsTemplate/advanced/page_add.html.btl
generator/src/main/resources/gunsTemplate/advanced/page_edit.html.btl
generator/src/main/resources/gunsTemplate/advanced/page_info.js.btl
generator/src/main/resources/gunsTemplate/advanced/service.java.vm
generator/src/main/resources/gunsTemplate/advanced/serviceImpl.java.vm
guns/.gitattributes
guns/.gitignore
guns/_devops/settings.xml
guns/pom.xml
guns/src/main/java/cn/stylefeng/guns/GunsApplication.java
guns/src/main/java/cn/stylefeng/guns/GunsServletInitializer.java
guns/src/main/java/cn/stylefeng/guns/config/MapperScanConfiguration.java
guns/src/main/java/cn/stylefeng/guns/config/RefundConfig.java
guns/src/main/java/cn/stylefeng/guns/config/SwaggerConfig.java
guns/src/main/java/cn/stylefeng/guns/config/TransactionAdviceConfig.java
guns/src/main/java/cn/stylefeng/guns/config/web/SpringMvcConfiguration.java
guns/src/main/java/cn/stylefeng/guns/core/consts/ProjectConstants.java
guns/src/main/java/cn/stylefeng/guns/core/error/CustomErrorAttributes.java
guns/src/main/java/cn/stylefeng/guns/core/error/GlobalExceptionHandler.java
guns/src/main/java/cn/stylefeng/guns/core/exception/BusinessException.java
guns/src/main/java/cn/stylefeng/guns/core/security/AuthJwtTokenSecurityInterceptor.java
guns/src/main/java/cn/stylefeng/guns/core/security/PermissionSecurityInterceptor.java
guns/src/main/java/cn/stylefeng/guns/core/security/base/BaseSecurityInterceptor.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/BannerController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/ContractRecordController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingInfoController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingOrderController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingOrderReservationController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingReservationRecordController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingReservationWorkController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingSetMealController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingSpecialTimeConfigController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingTagController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingTimeConfigController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseChapterController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseOrderController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseStudyNoteController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseTagController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseUserLearnedController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CouserChapterLearningRateController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/ExcelController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/HelpController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisSpecialTimeConfigController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisTimeConfigController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisTimeController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalTestClassController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalTestTopicController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/OrderConsultOneController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/OrderMentalTestController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/PsychologicalColumnController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/StatMentalTestController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/StoreAppointmentController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SysRoleBusinessController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SysUserBusinessController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SystemSetController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/TotalReportController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/UploadController.java
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/UserManageController.java
guns/src/main/java/cn/stylefeng/guns/modular/test/TestMultiTranController.java
guns/src/main/java/cn/stylefeng/guns/modular/test/TestSingleTranController.java
guns/src/main/java/cn/stylefeng/guns/modular/test/factory/NormalUserFactory.java
guns/src/main/java/cn/stylefeng/guns/modular/test/service/GunsDbService.java
guns/src/main/java/cn/stylefeng/guns/modular/test/service/OtherDbService.java
guns/src/main/java/cn/stylefeng/guns/modular/test/service/TranTestService.java
guns/src/main/java/cn/stylefeng/guns/utils/CrmebUtil.java
guns/src/main/java/cn/stylefeng/guns/utils/ExportUtil.java
guns/src/main/java/cn/stylefeng/guns/utils/ObsUtil.java
guns/src/main/java/cn/stylefeng/guns/utils/UploadUtil.java
guns/src/main/resources/Dockerfile
guns/src/main/resources/Dockerfile-dev
guns/src/main/resources/application-dev.yml
guns/src/main/resources/application-local.yml
guns/src/main/resources/application-prod.yml
guns/src/main/resources/application.yml
guns/src/main/resources/db/migration/mysql/V7.3.0_20221019_2220__init_guns.sql
guns/src/main/resources/db/migration/mysql/V7.3.3_20221121_2307__add_message_url.sql
guns/src/main/resources/logback-spring.xml
pom.xml
rest/pom.xml
rest/src/main/java/cn/stylefeng/rest/RestApplication.java
rest/src/main/java/cn/stylefeng/rest/RestServletInitialize.java
rest/src/main/java/cn/stylefeng/rest/config/ImMessageRoutingRedisAutoConfiguration.java
rest/src/main/java/cn/stylefeng/rest/config/MapperScanConfiguration.java
rest/src/main/java/cn/stylefeng/rest/config/ObjectRedisAutoConfiguration.java
rest/src/main/java/cn/stylefeng/rest/config/SwaggerConfig.java
rest/src/main/java/cn/stylefeng/rest/config/TransactionAdviceConfig.java
rest/src/main/java/cn/stylefeng/rest/config/cache/ImMessageRoutingRedisCache.java
rest/src/main/java/cn/stylefeng/rest/config/cache/ObjectRedisCache.java
rest/src/main/java/cn/stylefeng/rest/config/web/SpringMvcConfiguration.java
rest/src/main/java/cn/stylefeng/rest/core/consts/ProjectConstants.java
rest/src/main/java/cn/stylefeng/rest/core/error/CustomErrorAttributes.java
rest/src/main/java/cn/stylefeng/rest/core/error/GlobalExceptionHandler.java
rest/src/main/java/cn/stylefeng/rest/core/exception/BusinessException.java
rest/src/main/java/cn/stylefeng/rest/core/security/AuthJwtTokenSecurityInterceptor.java
rest/src/main/java/cn/stylefeng/rest/core/security/PermissionSecurityInterceptor.java
rest/src/main/java/cn/stylefeng/rest/core/security/base/BaseSecurityInterceptor.java
rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java
rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/AliPayBean.java
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/H5SceneInfo.java
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/WxPayBean.java
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/request/AliAppPayRequest.java
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/request/WxAppPayRequest.java
rest/src/main/java/cn/stylefeng/rest/modular/home/controller/HomeIndexController.java
rest/src/main/java/cn/stylefeng/rest/modular/home/controller/HomePsychologicalColumnController.java
rest/src/main/java/cn/stylefeng/rest/modular/home/controller/PublicController.java
rest/src/main/java/cn/stylefeng/rest/modular/home/service/MentalTestBizService.java
rest/src/main/java/cn/stylefeng/rest/modular/im/controller/ImController.java
rest/src/main/java/cn/stylefeng/rest/modular/im/controller/ImNotifyController.java
rest/src/main/java/cn/stylefeng/rest/modular/order/controller/MentalTestController.java
rest/src/main/java/cn/stylefeng/rest/modular/order/controller/MentalTestOrderController.java
rest/src/main/java/cn/stylefeng/rest/modular/order/service/MentalTestOrderBizService.java
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CourseController.java
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/MyMentalTestController.java
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserEvaluateController.java
rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java
rest/src/main/java/cn/stylefeng/rest/modular/work/MentalAppointmentWork.java
rest/src/main/java/cn/stylefeng/rest/modular/work/OrderOutTimeCancelWork.java
rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/MentalAnalysisTimeConfigController.java
rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/TotalReportController.java
rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java
rest/src/main/java/cn/stylefeng/rest/modular/worker/service/WorkerBizService.java
rest/src/main/resources/Dockerfile
rest/src/main/resources/Dockerfile-dev
rest/src/main/resources/application-dev.yml
rest/src/main/resources/application-local.yml
rest/src/main/resources/application-prod.yml
rest/src/main/resources/application.yml
rest/src/main/resources/ijpay/alipay.properties
rest/src/main/resources/ijpay/cert/apiclient_cert.p12
rest/src/main/resources/ijpay/cert/apiclient_cert.pem
rest/src/main/resources/ijpay/cert/apiclient_key.pem
rest/src/main/resources/ijpay/cert/pfx-password.txt
rest/src/main/resources/ijpay/cert/证书使用说明.txt
rest/src/main/resources/ijpay/wxpay.properties
rest/src/main/resources/logback-spring.xml
roses/README.md
roses/kernel-a-rule/README.md
roses/kernel-a-rule/pom.xml
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/BusinessLog.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/ChineseDescription.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/EnumFieldFormat.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/SimpleFieldFormat.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/base/ReadableEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/base/SimpleFieldFormatProcess.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/callback/ConfigUpdateCallback.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/RuleConstants.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/SymbolConstant.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/TenantConstants.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/TreeConstants.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/context/ApplicationPropertiesContext.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerMentalAnalysisStatusEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerStatusEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerUserTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerWorkStatusEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DeleteEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/FieldTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/FormatTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImPushTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImStatusEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImUserTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/MentalAppointmentConsultStatusEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/MentalAppointmentStatusEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/OrderStatusFlagEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/OrderTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PayTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PostIdEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PostTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ResBizTypeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SexEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SortByEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/StatusEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SystemSetEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/TreeNodeEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/YesOrNotEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/AbstractExceptionEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/base/ServiceException.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultBusinessExceptionEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultThirdExceptionEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultUserExceptionEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/http/ServletExceptionEnum.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/format/BaseSimpleFieldFormatProcess.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ApplicationReadyListener.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ApplicationStartedListener.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ContextInitializedListener.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/dict/SimpleDict.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BaseIdRequest.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BasePageRequest.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BaseRequest.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/ErrorResponseData.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/ResponseData.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/SuccessResponseData.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/OnceTenantCodeHolder.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/RequestTenantCodeHolder.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/TenantPrefixApi.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/threadlocal/RemoveThreadLocalApi.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/DefaultTreeBuildFactory.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/base/AbstractTreeBuildFactory.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/base/AbstractTreeNode.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/node/DefaultTreeNode.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/xmtree/DefaultXmSelectNode.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/xmtree/base/AbstractXmSelectNode.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/ztree/ZTreeNode.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/AntPathMatcherUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/AopTargetUtils.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ClassTypeUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DatabaseTypeUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DateRegexUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DbConnectionUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ExceptionUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/GunsResourceCodeUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/HttpServletUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/IpInfoUtils.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/LicenseTitleAppenderUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MixFieldTypeUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MvnDeployUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ObjectConvertUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ProjectUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/RedirectUrlBuildUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ResponseRenderUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/StrFilterUtil.java
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/TokenSignUtil.java
roses/kernel-d-auth/README.md
roses/kernel-d-auth/auth-api/README.md
roses/kernel-d-auth/auth-api/pom.xml
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthServiceApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/LoginUserApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/PermissionServiceApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/SessionManagerApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/SsoServerApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/TempSecretApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/constants/AuthConstants.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/constants/LoginCacheConstants.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginContext.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserHolder.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserRemoveThreadLocalHolder.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/cookie/SessionCookieCreator.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/enums/DataScopeTypeEnum.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/enums/SsoClientTypeEnum.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/AuthException.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/enums/AuthExceptionEnum.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/AuthConfigExpander.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/LoginConfigExpander.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/CommonLoginUserUtil.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/api/LoginUserRemoteApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/pojo/LoginUserRequest.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/pojo/SessionValidateResponse.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordStoredEncryptApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordTransferEncryptApi.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginRequest.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginResponse.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginWithTokenRequest.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/PwdRsaSecretProperties.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/LoginUser.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/basic/SimpleRoleInfo.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/basic/SimpleUserInfo.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/sso/SsoLoginCodeRequest.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/sso/SsoProperties.java
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/prop/LoginUserPropExpander.java
roses/kernel-d-auth/auth-sdk/README.md
roses/kernel-d-auth/auth-sdk/pom.xml
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginUserImpl.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/cache/LoginErrorCountMemoryCache.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/cache/LoginErrorCountRedisCache.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/callback/TenantCodeRemoveThreadLocalHolder.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/config/InitConfigWebSocketCallbackApiImpl.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/BcryptPasswordStoredEncrypt.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/RsaPasswordTransferEncrypt.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/permission/PermissionServiceImpl.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/catoken/MemoryCaClientTokenCache.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/catoken/RedisCaClientTokenCache.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/logintoken/MemoryLoginTokenCache.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/logintoken/RedisLoginTokenCache.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/loginuser/MemoryLoginUserCache.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/loginuser/RedisLoginUserCache.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cookie/DefaultSessionCookieCreator.java
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/timer/ClearInvalidLoginUserCacheTimer.java
roses/kernel-d-auth/auth-spring-boot-starter/README.md
roses/kernel-d-auth/auth-spring-boot-starter/pom.xml
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsAuthAutoConfiguration.java
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsPasswordRsaPropAutoConfiguration.java
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsSsoAutoConfiguration.java
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenMemoryCacheAutoConfiguration.java
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenRedisCacheAutoConfiguration.java
roses/kernel-d-auth/auth-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-auth/pom.xml
roses/kernel-d-cache/README.md
roses/kernel-d-cache/cache-api/README.md
roses/kernel-d-cache/cache-api/pom.xml
roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java
roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/constants/CacheConstants.java
roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/tenant/TenantCacheProxy.java
roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/tenant/TenantCacheProxyFactory.java
roses/kernel-d-cache/cache-sdk-memory/README.md
roses/kernel-d-cache/cache-sdk-memory/pom.xml
roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/AbstractMemoryCacheOperator.java
roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/operator/DefaultMemoryCacheOperator.java
roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/operator/DefaultStringMemoryCacheOperator.java
roses/kernel-d-cache/cache-sdk-redis/README.md
roses/kernel-d-cache/cache-sdk-redis/pom.xml
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisCacheOperator.java
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisHashCacheOperator.java
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/operator/DefaultRedisCacheOperator.java
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/operator/DefaultStringRedisCacheOperator.java
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/serializer/FastJson2JsonRedisSerializer.java
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/util/CreateRedisTemplateUtil.java
roses/kernel-d-cache/memory-cache-spring-boot-starter/README.md
roses/kernel-d-cache/memory-cache-spring-boot-starter/pom.xml
roses/kernel-d-cache/memory-cache-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/cache/memory/starter/GunsMemoryCacheAutoConfiguration.java
roses/kernel-d-cache/memory-cache-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-cache/pom.xml
roses/kernel-d-cache/redis-spring-boot-starter/README.md
roses/kernel-d-cache/redis-spring-boot-starter/pom.xml
roses/kernel-d-cache/redis-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/cache/redis/starter/GunsRedisCacheAutoConfiguration.java
roses/kernel-d-cache/redis-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-config/README.md
roses/kernel-d-config/config-api/README.md
roses/kernel-d-config/config-api/pom.xml
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigApi.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitCallbackApi.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitStrategyApi.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/InitConfigApi.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/SysConfigDataApi.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/constants/ConfigConstants.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/context/ConfigContext.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/exception/ConfigException.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/exception/enums/ConfigExceptionEnum.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitItem.java
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitRequest.java
roses/kernel-d-config/config-business/README.md
roses/kernel-d-config/config-business/pom.xml
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/controller/SysConfigController.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/entity/SysConfig.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/factory/SysConfigDataFactory.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/listener/ConfigInitListener.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/mapper/SysConfigMapper.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/mapper/mapping/SysConfigMapper.xml
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/InitConfigGroup.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/InitConfigResponse.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/param/SysConfigParam.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/SysConfigService.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/impl/SysConfigServiceImpl.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/MssqlSysConfigData.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/MysqlSysConfigData.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/OracleSysConfigData.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/PgsqlSysConfigData.java
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/strategy/DefaultStrategyImpl.java
roses/kernel-d-config/config-sdk-map/README.md
roses/kernel-d-config/config-sdk-map/pom.xml
roses/kernel-d-config/config-sdk-map/src/main/java/cn/stylefeng/roses/kernel/config/ConfigContainer.java
roses/kernel-d-config/config-sdk-redis/README.md
roses/kernel-d-config/config-sdk-redis/pom.xml
roses/kernel-d-config/config-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/config/redis/RedisConfigContainer.java
roses/kernel-d-config/config-spring-boot-starter/README.md
roses/kernel-d-config/config-spring-boot-starter/pom.xml
roses/kernel-d-config/config-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/config/starter/GunsSysConfigAutoConfiguration.java
roses/kernel-d-config/config-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-config/pom.xml
roses/kernel-d-db/README.md
roses/kernel-d-db/db-api/README.md
roses/kernel-d-db/db-api/pom.xml
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/DbOperatorApi.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/constants/DbConstants.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/constants/DbFieldConstants.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/context/DbOperatorContext.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/DaoException.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DaoExceptionEnum.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DatabaseExceptionEnum.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DbInitEnum.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/FlywayExceptionEnum.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/expander/DruidConfigExpander.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidDatasourceFactory.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/PageFactory.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/PageResultFactory.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/db/TableFieldInfo.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/db/TableInfo.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/druid/DruidProperties.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/entity/BaseEntity.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/page/PageResult.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/AbstractSql.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/CreateDatabaseSql.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/DropDatabaseSql.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/GetDatabasesSql.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/table/TableFieldListSql.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/table/TableListSql.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/ClobUtil.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/DatabaseUtil.java
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlRunUtil.java
roses/kernel-d-db/db-sdk-flyway/pom.xml
roses/kernel-d-db/db-sdk-flyway/src/main/java/cn/stylefeng/roses/kernel/db/flyway/FlywayInitListener.java
roses/kernel-d-db/db-sdk-flyway/src/main/resources/META-INF/spring.factories
roses/kernel-d-db/db-sdk-init/pom.xml
roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/actuator/DbInitializer.java
roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/listener/InitTableListener.java
roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlExe.java
roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlUtil.java
roses/kernel-d-db/db-sdk-mp/README.md
roses/kernel-d-db/db-sdk-mp/pom.xml
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/dbid/CustomDatabaseIdProvider.java
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/dboperator/DbOperatorImpl.java
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/fieldfill/CustomMetaObjectHandler.java
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomBaseMapper.java
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomInsertBatchSqlInjector.java
roses/kernel-d-db/db-spring-boot-starter/README.md
roses/kernel-d-db/db-spring-boot-starter/pom.xml
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDataSourceAutoConfiguration.java
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDruidMonitorAutoConfiguration.java
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDruidPropertiesAutoConfiguration.java
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsMyBatisPlusAutoConfiguration.java
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsRemoveDruidAdAutoConfiguration.java
roses/kernel-d-db/db-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-db/pom.xml
roses/kernel-d-ds-container/README.md
roses/kernel-d-ds-container/ds-container-api/README.md
roses/kernel-d-ds-container/ds-container-api/pom.xml
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/DataSourceApi.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/annotation/DataSource.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/constants/DatasourceContainerConstants.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/context/CurrentDataSourceContext.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/enums/DataSourceStatusEnum.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/exception/DatasourceContainerException.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/exception/enums/DatasourceContainerExceptionEnum.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataBaseInfoDto.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataSourceDto.java
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/request/DatabaseInfoRequest.java
roses/kernel-d-ds-container/ds-container-business/README.md
roses/kernel-d-ds-container/ds-container-business/pom.xml
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/controller/DatabaseInfoController.java
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/entity/DatabaseInfo.java
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidPropertiesFactory.java
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/mapper/DatabaseInfoMapper.java
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/mapper/mapping/DatabaseInfoMapper.xml
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/DatabaseInfoService.java
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/timer/DataSourceStatusCheckTimer.java
roses/kernel-d-ds-container/ds-container-sdk/README.md
roses/kernel-d-ds-container/ds-container-sdk/pom.xml
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/AbstractRoutingDataSource.java
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/DynamicDataSource.java
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/aop/MultiSourceExchangeAop.java
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/context/DataSourceContext.java
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/listener/DataSourceInitListener.java
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/DataBaseInfoPersistence.java
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/AddDatabaseInfoSql.java
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/DatabaseListSql.java
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/DeleteDatabaseInfoSql.java
roses/kernel-d-ds-container/ds-container-spring-boot-starter/README.md
roses/kernel-d-ds-container/ds-container-spring-boot-starter/pom.xml
roses/kernel-d-ds-container/ds-container-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dsctn/starter/GunsDataSourceContainerAutoConfiguration.java
roses/kernel-d-ds-container/ds-container-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-ds-container/pom.xml
roses/kernel-d-email/README.md
roses/kernel-d-email/email-api/README.md
roses/kernel-d-email/email-api/pom.xml
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/MailSenderApi.java
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/constants/MailConstants.java
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/context/MailSenderContext.java
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/exception/MailException.java
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/exception/enums/EmailExceptionEnum.java
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/expander/EmailConfigExpander.java
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/SendMailParam.java
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/aliyun/AliyunMailSenderProperties.java
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/aliyun/AliyunSendMailParam.java
roses/kernel-d-email/email-sdk-aliyun/README.md
roses/kernel-d-email/email-sdk-aliyun/pom.xml
roses/kernel-d-email/email-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/email/aliyun/AliyunMailSender.java
roses/kernel-d-email/email-sdk-java/README.md
roses/kernel-d-email/email-sdk-java/pom.xml
roses/kernel-d-email/email-sdk-java/src/main/java/cn/stylefeng/roses/kernel/email/jdk/JavaMailSender.java
roses/kernel-d-email/email-spring-boot-starter/README.md
roses/kernel-d-email/email-spring-boot-starter/pom.xml
roses/kernel-d-email/email-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/email/starter/GunsEmailAutoConfiguration.java
roses/kernel-d-email/email-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-email/pom.xml
roses/kernel-d-file/README.md
roses/kernel-d-file/file-api/README.md
roses/kernel-d-file/file-api/pom.xml
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/FileInfoApi.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/FileOperatorApi.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/context/FileContext.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/BucketAuthEnum.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileLocationEnum.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileStatusEnum.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/exception/FileException.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/exception/enums/FileExceptionEnum.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/expander/FileConfigExpander.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/AntdvFileInfo.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/AliyunOssProperties.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/LocalFileProperties.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/MinIoProperties.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/TenCosProperties.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/request/SysFileInfoRequest.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/response/SysFileInfoListResponse.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/response/SysFileInfoResponse.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/DownloadUtil.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/PdfFileTypeUtil.java
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/PicFileTypeUtil.java
roses/kernel-d-file/file-business/README.md
roses/kernel-d-file/file-business/pom.xml
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileInfo.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileStorage.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/factory/FileInfoFactory.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileInfoMapper.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileStorageMapper.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileInfoMapper.xml
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileStorageMapper.xml
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileInfoService.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileStorageService.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileStorageServiceImpl.java
roses/kernel-d-file/file-sdk-aliyun/README.md
roses/kernel-d-file/file-sdk-aliyun/pom.xml
roses/kernel-d-file/file-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/file/aliyun/AliyunFileOperator.java
roses/kernel-d-file/file-sdk-local/README.md
roses/kernel-d-file/file-sdk-local/pom.xml
roses/kernel-d-file/file-sdk-local/src/main/java/cn/stylefeng/roses/kernel/file/local/LocalFileOperator.java
roses/kernel-d-file/file-sdk-minio/README.md
roses/kernel-d-file/file-sdk-minio/pom.xml
roses/kernel-d-file/file-sdk-minio/src/main/java/cn/stylefeng/roses/kernel/file/minio/MinIoFileOperator.java
roses/kernel-d-file/file-sdk-tencent/README.md
roses/kernel-d-file/file-sdk-tencent/pom.xml
roses/kernel-d-file/file-sdk-tencent/src/main/java/cn/stylefeng/roses/kernel/file/tencent/TenFileOperator.java
roses/kernel-d-file/file-spring-boot-starter/README.md
roses/kernel-d-file/file-spring-boot-starter/pom.xml
roses/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/GunsFileAutoConfiguration.java
roses/kernel-d-file/file-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-file/pom.xml
roses/kernel-d-groovy/README.md
roses/kernel-d-groovy/groovy-api/README.md
roses/kernel-d-groovy/groovy-api/pom.xml
roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/GroovyApi.java
roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/constants/GroovyConstants.java
roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/exception/GroovyException.java
roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/exception/enums/GroovyExceptionEnum.java
roses/kernel-d-groovy/groovy-sdk/README.md
roses/kernel-d-groovy/groovy-sdk/pom.xml
roses/kernel-d-groovy/groovy-sdk/src/main/java/cn/stylefeng/roses/kernel/groovy/GroovyOperator.java
roses/kernel-d-groovy/groovy-spring-boot-starter/README.md
roses/kernel-d-groovy/groovy-spring-boot-starter/pom.xml
roses/kernel-d-groovy/groovy-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/groovy/starter/GunsGroovyAutoConfiguration.java
roses/kernel-d-groovy/groovy-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-groovy/pom.xml
roses/kernel-d-i18n/README.md
roses/kernel-d-i18n/i18n-api/README.md
roses/kernel-d-i18n/i18n-api/pom.xml
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationApi.java
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationPersistenceApi.java
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/constants/TranslationConstants.java
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/context/TranslationContext.java
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/TranslationException.java
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/enums/TranslationExceptionEnum.java
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/TranslationDict.java
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/request/TranslationRequest.java
roses/kernel-d-i18n/i18n-business/README.md
roses/kernel-d-i18n/i18n-business/pom.xml
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/controller/TranslationController.java
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/controller/UserTranslationController.java
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/entity/Translation.java
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/factory/TranslationDictFactory.java
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/mapper/TranslationMapper.java
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/mapper/mapping/TranslationMapper.xml
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/TranslationService.java
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/impl/TranslationServiceImpl.java
roses/kernel-d-i18n/i18n-sdk/README.md
roses/kernel-d-i18n/i18n-sdk/pom.xml
roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/TranslationContainer.java
roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/listener/TranslationDictInitListener.java
roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/util/QuickTranslateUtil.java
roses/kernel-d-i18n/i18n-spring-boot-starter/README.md
roses/kernel-d-i18n/i18n-spring-boot-starter/pom.xml
roses/kernel-d-i18n/i18n-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/i18n/starter/GunsTranslationAutoConfiguration.java
roses/kernel-d-i18n/i18n-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-i18n/pom.xml
roses/kernel-d-im/im-api/pom.xml
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/ImServerApi.java
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/constants/ImConstants.java
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/context/ImContext.java
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/expander/ImConfigExpander.java
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/HistoryMessageDTO.java
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/ImMessageRoutingDTO.java
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/RongCloudProperties.java
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/request/ImUserModelRequest.java
roses/kernel-d-im/im-business-rongcloud/pom.xml
roses/kernel-d-im/im-business-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/business/controller/ImServerController.java
roses/kernel-d-im/im-sdk-rongcloud/pom.xml
roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java
roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/enums/RongCloudImResultEnum.java
roses/kernel-d-im/im-spring-boot-starter/pom.xml
roses/kernel-d-im/im-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/im/starter/GunsImAutoConfiguration.java
roses/kernel-d-im/im-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-im/pom.xml
roses/kernel-d-jwt/README.md
roses/kernel-d-jwt/jwt-api/README.md
roses/kernel-d-jwt/jwt-api/pom.xml
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/JwtApi.java
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/constants/JwtConstants.java
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/context/JwtContext.java
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/exception/JwtException.java
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/exception/enums/JwtExceptionEnum.java
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/expander/JwtConfigExpander.java
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/config/JwtConfig.java
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/payload/DefaultJwtPayload.java
roses/kernel-d-jwt/jwt-sdk/README.md
roses/kernel-d-jwt/jwt-sdk/pom.xml
roses/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/JwtTokenOperator.java
roses/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/factory/JwtTokenApiFactory.java
roses/kernel-d-jwt/jwt-spring-boot-starter/README.md
roses/kernel-d-jwt/jwt-spring-boot-starter/pom.xml
roses/kernel-d-jwt/jwt-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/jwt/starter/GunsJwtAutoConfiguration.java
roses/kernel-d-jwt/jwt-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-jwt/pom.xml
roses/kernel-d-log/README.md
roses/kernel-d-log/log-api/README.md
roses/kernel-d-log/log-api/pom.xml
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LogManagerApi.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LogRecordApi.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LoginLogServiceApi.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/constants/LogConstants.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/constants/LogFileConstants.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/context/LogRecordContext.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/context/ServerInfoContext.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/enums/LogSaveTypeEnum.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/exception/LogException.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/exception/enums/LogExceptionEnum.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/expander/LogConfigExpander.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/LogRecordFactory.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/AuthedLogAppender.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/HttpLogAppender.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/ParamsLogAppender.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/log/SysLogProperties.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/loginlog/SysLoginLogDto.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/loginlog/SysLoginLogRequest.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/manage/LogManagerRequest.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/record/LogRecordDTO.java
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/threadpool/LogManagerThreadPool.java
roses/kernel-d-log/log-business-login-log/README.md
roses/kernel-d-log/log-business-login-log/pom.xml
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/constants/LoginLogConstant.java
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/controller/SysLoginLogController.java
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/entity/SysLoginLog.java
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/mapper/SysLoginLogMapper.java
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/mapper/mapping/SysLoginLogMapper.xml
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/service/SysLoginLogService.java
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/service/impl/SysLoginLogServiceImpl.java
roses/kernel-d-log/log-business-manage/README.md
roses/kernel-d-log/log-business-manage/pom.xml
roses/kernel-d-log/log-business-manage/src/main/java/cn/stylefeng/roses/kernel/log/manage/controller/LogManagerController.java
roses/kernel-d-log/log-business-requestapi/README.md
roses/kernel-d-log/log-business-requestapi/pom.xml
roses/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/requestapi/RequestApiLogRecordAop.java
roses/kernel-d-log/log-sdk-db/README.md
roses/kernel-d-log/log-sdk-db/pom.xml
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/DbLogManagerServiceImpl.java
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/DbLogRecordServiceImpl.java
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/entity/SysLog.java
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/mapper/SysLogMapper.java
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/mapper/mapping/SysLogMapper.xml
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/service/SysLogService.java
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/service/impl/SysLogServiceImpl.java
roses/kernel-d-log/log-sdk-file/README.md
roses/kernel-d-log/log-sdk-file/pom.xml
roses/kernel-d-log/log-sdk-file/src/main/java/cn/stylefeng/roses/kernel/log/file/FileLogManagerServiceImpl.java
roses/kernel-d-log/log-sdk-file/src/main/java/cn/stylefeng/roses/kernel/log/file/FileLogRecordServiceImpl.java
roses/kernel-d-log/log-spring-boot-starter/README.md
roses/kernel-d-log/log-spring-boot-starter/pom.xml
roses/kernel-d-log/log-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/log/starter/GunsLogAutoConfiguration.java
roses/kernel-d-log/log-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-log/pom.xml
roses/kernel-d-mongodb/README.md
roses/kernel-d-mongodb/mongodb-api/pom.xml
roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/MongoFileApi.java
roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/MongodbApi.java
roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/constants/MongodbConstants.java
roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/exception/MongodbException.java
roses/kernel-d-mongodb/mongodb-integration-beetl/pom.xml
roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/mongodb/integration/controller/ModelViewController.java
roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/mongodb/integration/controller/MongoFileController.java
roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/resources/assets/modular/mongodb/fileList.js
roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/resources/pages/modular/mongodb/fileList.html
roses/kernel-d-mongodb/mongodb-sdk-file/pom.xml
roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/entity/MongoFileEntity.java
roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/mapper/MongoFileMapper.java
roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/service/MongoFileService.java
roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/service/impl/MongoFileServiceImpl.java
roses/kernel-d-mongodb/mongodb-sdk-springboot/pom.xml
roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/entity/GunsMapEntity.java
roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/mapper/GunsMapRepository.java
roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/service/GunsMapService.java
roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/service/impl/GunsMapServiceImpl.java
roses/kernel-d-mongodb/mongodb-spring-boot-starter/pom.xml
roses/kernel-d-mongodb/mongodb-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/mongodb/starter/GunsMongodbAutoConfiguration.java
roses/kernel-d-mongodb/mongodb-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-mongodb/pom.xml
roses/kernel-d-office/README.md
roses/kernel-d-office/office-api/README.md
roses/kernel-d-office/office-api/pom.xml
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/OfficeExcelApi.java
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/constants/OfficeConstants.java
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/exception/OfficeException.java
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/exception/enums/OfficeExceptionEnum.java
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/pojo/report/ExcelExportParam.java
roses/kernel-d-office/office-sdk-excel/README.md
roses/kernel-d-office/office-sdk-excel/pom.xml
roses/kernel-d-office/office-sdk-excel/src/main/java/cn/stylefeng/roses/kernel/office/excel/OfficeExcel.java
roses/kernel-d-office/office-sdk-excel/src/main/java/cn/stylefeng/roses/kernel/office/excel/listener/SimpleDataListener.java
roses/kernel-d-office/office-spring-boot-starter/README.md
roses/kernel-d-office/office-spring-boot-starter/pom.xml
roses/kernel-d-office/office-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/office/starter/ExcelAutoConfiguration.java
roses/kernel-d-office/pom.xml
roses/kernel-d-openapi/README.md
roses/kernel-d-openapi/openapi-api/pom.xml
roses/kernel-d-openapi/openapi-api/src/main/java/cn/stylefeng/roses/kernel/openapi/api/constants/OpenApiConstants.java
roses/kernel-d-openapi/openapi-api/src/main/java/cn/stylefeng/roses/kernel/openapi/api/exception/OpenApiException.java
roses/kernel-d-openapi/openapi-sdk-springdoc/pom.xml
roses/kernel-d-openapi/openapi-sdk-springdoc/src/main/java/cn/stylefeng/roses/kernel/springdoc/converter/GunsModelConverterImpl.java
roses/kernel-d-openapi/openapi-sdk-springdoc/src/main/java/cn/stylefeng/roses/kernel/springdoc/providers/GunsJavadocProviderImpl.java
roses/kernel-d-openapi/openapi-spring-boot-starter/pom.xml
roses/kernel-d-openapi/openapi-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/springdoc/starter/SpringdocOpenApiAutoConfiguration.java
roses/kernel-d-openapi/openapi-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-openapi/pom.xml
roses/kernel-d-pinyin/README.md
roses/kernel-d-pinyin/pinyin-api/README.md
roses/kernel-d-pinyin/pinyin-api/pom.xml
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/PinYinApi.java
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/constants/PinyinConstants.java
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/context/PinyinContext.java
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/exception/PinyinException.java
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/exception/enums/PinyinExceptionEnum.java
roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/README.md
roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/pom.xml
roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/src/main/java/cn/stylefeng/roses/kernel/pinyin/PinyinServiceImpl.java
roses/kernel-d-pinyin/pinyin-spring-boot-starter/README.md
roses/kernel-d-pinyin/pinyin-spring-boot-starter/pom.xml
roses/kernel-d-pinyin/pinyin-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/pinyin/starter/GunsPinyinAutoConfiguration.java
roses/kernel-d-pinyin/pinyin-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-pinyin/pom.xml
roses/kernel-d-scanner/README.md
roses/kernel-d-scanner/pom.xml
roses/kernel-d-scanner/scanner-api/README.md
roses/kernel-d-scanner/scanner-api/pom.xml
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsDetectApi.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsReportApi.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/ResourceCollectorApi.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/ResourceReportApi.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/ApiResource.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/GetResource.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/PostResource.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/context/MetadataContext.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/enums/FieldMetadataTypeEnum.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/enums/ParamTypeEnum.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/ScannerException.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/enums/DevOpsExceptionEnum.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/enums/ScannerExceptionEnum.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/factory/ClassDetailMetadataFactory.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/factory/ClassMetadataFactory.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/InitScanFlagHolder.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/IpAddrHolder.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/IpAddrRemoveThreadLocalHolder.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/devops/DevOpsReportProperties.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/devops/DevOpsReportResourceParam.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/FieldMetadata.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ParameterMetadata.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ReportResourceParam.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ResourceDefinition.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ResourceUrlParam.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/SysResourcePersistencePojo.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/UserResourceParam.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/scanner/ScannerProperties.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassDescriptionUtil.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassReflectUtil.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/FieldDescriptionUtil.java
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/MethodReflectUtil.java
roses/kernel-d-scanner/scanner-sdk-scanner/README.md
roses/kernel-d-scanner/scanner-sdk-scanner/pom.xml
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ApiResourceScanner.java
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/DefaultResourceCollector.java
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ResourceReportListener.java
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/DefaultDevOpsReportImpl.java
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/LocalizedDevOpsReportImpl.java
roses/kernel-d-scanner/scanner-spring-boot-starter/README.md
roses/kernel-d-scanner/scanner-spring-boot-starter/pom.xml
roses/kernel-d-scanner/scanner-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/scanner/starter/GunsResourceAutoConfiguration.java
roses/kernel-d-scanner/scanner-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-seata/README.md
roses/kernel-d-seata/db/db.sql
roses/kernel-d-seata/doc/seata使用手册.docx
roses/kernel-d-seata/pom.xml
roses/kernel-d-seata/seata-demo-order/pom.xml
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/consumer/StorageConsumer.java
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/consumer/WalletConsumer.java
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/controller/OrderController.java
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/entity/Order.java
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/OrderMapper.java
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/mapping/OrderMapper.xml
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/OrderService.java
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/impl/OrderServiceImpl.java
roses/kernel-d-seata/seata-demo-storage-api/pom.xml
roses/kernel-d-seata/seata-demo-storage-api/src/main/java/cn/stylefeng/roses/kernel/seata/api/StorageApi.java
roses/kernel-d-seata/seata-demo-wallet-api/pom.xml
roses/kernel-d-seata/seata-demo-wallet-api/src/main/java/cn/stylefeng/roses/kernel/seata/wallet/api/WalletApi.java
roses/kernel-d-security/README.md
roses/kernel-d-security/pom.xml
roses/kernel-d-security/security-api/README.md
roses/kernel-d-security/security-api/pom.xml
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/BlackListApi.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/CountValidatorApi.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/DragCaptchaApi.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/ImageCaptchaApi.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/WhiteListApi.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/CaptchaConstants.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/CounterConstants.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/SecurityConstants.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/CountValidateException.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/SecurityException.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/XssFilterException.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/CountValidateExceptionEnum.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/SecurityExceptionEnum.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/XssFilterExceptionEnum.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/expander/SecurityConfigExpander.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/pojo/DragCaptchaImageDTO.java
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/pojo/ImageCaptcha.java
roses/kernel-d-security/security-sdk-black-white/README.md
roses/kernel-d-security/security-sdk-black-white/pom.xml
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/BlackListService.java
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/WhiteListService.java
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListMemoryCache.java
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListRedisCache.java
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListMemoryCache.java
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListRedisCache.java
roses/kernel-d-security/security-sdk-captcha/README.md
roses/kernel-d-security/security-sdk-captcha/pom.xml
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/DragCaptchaService.java
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/ImageCaptchaService.java
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/cache/CaptchaMemoryCache.java
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/cache/CaptchaRedisCache.java
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/util/DragCaptchaImageUtil.java
roses/kernel-d-security/security-sdk-clear-threadlocal/README.md
roses/kernel-d-security/security-sdk-clear-threadlocal/pom.xml
roses/kernel-d-security/security-sdk-clear-threadlocal/src/main/java/cn/stylefeng/roses/kernel/security/clear/ClearThreadLocalFilter.java
roses/kernel-d-security/security-sdk-cors/README.md
roses/kernel-d-security/security-sdk-cors/pom.xml
roses/kernel-d-security/security-sdk-cors/src/main/java/cn/stylefeng/roses/kernel/security/cors/CorsFilterConfiguration.java
roses/kernel-d-security/security-sdk-count/README.md
roses/kernel-d-security/security-sdk-count/pom.xml
roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/DefaultCountValidator.java
roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/cache/CountValidateMemoryCache.java
roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/cache/CountValidateRedisCache.java
roses/kernel-d-security/security-sdk-database-field/README.md
roses/kernel-d-security/security-sdk-database-field/pom.xml
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/algorithm/EncryptAlgorithmApi.java
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/algorithm/impl/AesEncryptAlgorithmApiImpl.java
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/EncryptField.java
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/ProtectedData.java
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/ProtectedField.java
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/interceptor/ParameterInterceptor.java
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/interceptor/ResultInterceptor.java
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/README.md
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/pom.xml
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/advice/EncryptionRequestBodyAdvice.java
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/advice/EncryptionResponseBodyAdvice.java
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/constants/EncryptionConstants.java
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/exception/EncryptionException.java
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/exception/enums/EncryptionExceptionEnum.java
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptRemoveThreadLocalHolder.java
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptionHolder.java
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptionRsaHolder.java
roses/kernel-d-security/security-sdk-xss/README.md
roses/kernel-d-security/security-sdk-xss/pom.xml
roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssFilter.java
roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssHttpServletRequestWrapper.java
roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssJacksonDeserializer.java
roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/prop/XssProperties.java
roses/kernel-d-security/security-spring-boot-starter/README.md
roses/kernel-d-security/security-spring-boot-starter/pom.xml
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/CaptchaAutoConfiguration.java
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/CounterAutoConfiguration.java
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/EncryptAlgorithmAutoConfiguration.java
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/GunsSecurityAutoConfiguration.java
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/GunsXssAutoConfiguration.java
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityMemoryCacheAutoConfiguration.java
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityRedisCacheAutoConfiguration.java
roses/kernel-d-security/security-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-sms/README.md
roses/kernel-d-sms/pom.xml
roses/kernel-d-sms/sms-api/README.md
roses/kernel-d-sms/sms-api/pom.xml
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/SmsSenderApi.java
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/constants/SmsConstants.java
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/context/SmsContext.java
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/exception/SmsException.java
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/exception/enums/SmsExceptionEnum.java
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/expander/SmsConfigExpander.java
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/pojo/AliyunSmsProperties.java
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/pojo/TencentSmsProperties.java
roses/kernel-d-sms/sms-business-validation/README.md
roses/kernel-d-sms/sms-business-validation/pom.xml
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/controller/SmsSenderController.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/entity/SysSms.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsSendSourceEnum.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsSendStatusEnum.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsTypeEnum.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/mapper/SysSmsMapper.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/mapper/mapping/SysSmsMapper.xml
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsInfoParam.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsSendParam.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsVerifyParam.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/service/SysSmsInfoService.java
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/service/impl/SysSmsInfoServiceImpl.java
roses/kernel-d-sms/sms-sdk-aliyun/README.md
roses/kernel-d-sms/sms-sdk-aliyun/pom.xml
roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/AliyunSmsSender.java
roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/enums/AliyunSmsResultEnum.java
roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/msign/MultiSignManager.java
roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/msign/impl/MapBasedMultiSignManager.java
roses/kernel-d-sms/sms-sdk-huawei/README.md
roses/kernel-d-sms/sms-sdk-huawei/pom.xml
roses/kernel-d-sms/sms-sdk-huawei/src/main/java/cn/stylefeng/roses/kernel/sms/huawei/HuaweiSmsSender.java
roses/kernel-d-sms/sms-sdk-tencent/README.md
roses/kernel-d-sms/sms-sdk-tencent/pom.xml
roses/kernel-d-sms/sms-sdk-tencent/src/main/java/cn/stylefeng/roses/kernel/sms/tencent/TencentSmsSender.java
roses/kernel-d-sms/sms-spring-boot-starter/README.md
roses/kernel-d-sms/sms-spring-boot-starter/pom.xml
roses/kernel-d-sms/sms-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sms/starter/GunsSmsAutoConfiguration.java
roses/kernel-d-sms/sms-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-socket/pom.xml
roses/kernel-d-socket/socket-api/README.md
roses/kernel-d-socket/socket-api/pom.xml
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/SocketOperatorApi.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/constants/SocketConstants.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/ClientMessageTypeEnum.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/ServerMessageTypeEnum.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/SystemMessageTypeEnum.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/exception/SocketException.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/exception/enums/SocketExceptionEnum.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/message/SocketMsgCallbackInterface.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/SocketSessionOperatorApi.java
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/pojo/SocketSession.java
roses/kernel-d-socket/socket-business-websocket/pom.xml
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/config/WebSocketConfig.java
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/message/SocketMessageCenter.java
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/WebSocketOperator.java
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/channel/GunsSocketOperator.java
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/channel/SocketChannelExpandInterFace.java
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/pojo/WebSocketMessageDTO.java
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/server/WebSocketServer.java
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/session/SessionCenter.java
roses/kernel-d-socket/socket-spring-boot-starter/README.md
roses/kernel-d-socket/socket-spring-boot-starter/pom.xml
roses/kernel-d-socket/socket-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/socket/starter/GunsSocketAutoConfiguration.java
roses/kernel-d-socket/socket-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-timer/README.md
roses/kernel-d-timer/pom.xml
roses/kernel-d-timer/timer-api/README.md
roses/kernel-d-timer/timer-api/pom.xml
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/TimerAction.java
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/TimerExeService.java
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/constants/TimerConstants.java
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/enums/TimerJobStatusEnum.java
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/exception/TimerException.java
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/exception/enums/TimerExceptionEnum.java
roses/kernel-d-timer/timer-business/README.md
roses/kernel-d-timer/timer-business/pom.xml
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/controller/SysTimersController.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/entity/SysTimers.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/listener/TaskRunListener.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/mapper/SysTimersMapper.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/mapper/mapping/SysTimersMapper.xml
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/TimerMigrationImpl.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/pojo/TimerMigrationInfo.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/pojo/v1/SysTimersMigration.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/param/SysTimersParam.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/service/SysTimersService.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/service/impl/SysTimersServiceImpl.java
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/tasks/SystemOutTaskRunner.java
roses/kernel-d-timer/timer-sdk-hutool/README.md
roses/kernel-d-timer/timer-sdk-hutool/pom.xml
roses/kernel-d-timer/timer-sdk-hutool/src/main/java/cn/stylefeng/roses/kernel/timer/hutool/HutoolTimerExeServiceImpl.java
roses/kernel-d-timer/timer-sdk-hutool/src/main/java/cn/stylefeng/roses/kernel/timer/hutool/TimerExeServiceImpl.java
roses/kernel-d-timer/timer-spring-boot-starter/README.md
roses/kernel-d-timer/timer-spring-boot-starter/pom.xml
roses/kernel-d-timer/timer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/timer/starter/GunsTimerAutoConfiguration.java
roses/kernel-d-timer/timer-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-validator/README.md
roses/kernel-d-validator/pom.xml
roses/kernel-d-validator/validator-api-table-unique/README.md
roses/kernel-d-validator/validator-api-table-unique/pom.xml
roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/TableUniqueValue.java
roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/TableUniqueValueValidator.java
roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/service/TableUniqueValueService.java
roses/kernel-d-validator/validator-api/README.md
roses/kernel-d-validator/validator-api/pom.xml
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/constants/ValidatorConstants.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestGroupContext.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestParamContext.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestRemoveThreadLocalHolder.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/exception/ParamValidateException.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/exception/enums/ValidatorExceptionEnum.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/pojo/UniqueValidateParam.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/utils/ValidatorUtil.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/date/DateValue.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/date/DateValueValidator.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/flag/FlagValue.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/flag/FlagValueValidator.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/phone/PhoneValue.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/phone/PhoneValueValidator.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/status/StatusValue.java
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/status/StatusValueValidator.java
roses/kernel-d-validator/validator-spring-boot-starter/README.md
roses/kernel-d-validator/validator-spring-boot-starter/pom.xml
roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/CacheParamRequestBodyAdvice.java
roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/GunsValidator.java
roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/GunsValidatorAutoConfiguration.java
roses/kernel-d-validator/validator-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-d-wrapper/README.md
roses/kernel-d-wrapper/pom.xml
roses/kernel-d-wrapper/wrapper-api/README.md
roses/kernel-d-wrapper/wrapper-api/pom.xml
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/BaseWrapper.java
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/annotation/Wrapper.java
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/constants/WrapperConstants.java
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/exception/WrapperException.java
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/exception/enums/WrapperExceptionEnum.java
roses/kernel-d-wrapper/wrapper-field-sdk/README.md
roses/kernel-d-wrapper/wrapper-field-sdk/pom.xml
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/enums/EnumFieldFormatDeserializer.java
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/enums/EnumFieldFormatSerializer.java
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/jackson/CustomJacksonIntrospector.java
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/jackson/package-info.java
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/mvc/CustomEnumGenericConverter.java
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/simple/SimpleFieldFormatSerializer.java
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/util/CommonFormatUtil.java
roses/kernel-d-wrapper/wrapper-sdk/README.md
roses/kernel-d-wrapper/wrapper-sdk/pom.xml
roses/kernel-d-wrapper/wrapper-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/WrapperAop.java
roses/kernel-d-wrapper/wrapper-spring-boot-starter/README.md
roses/kernel-d-wrapper/wrapper-spring-boot-starter/pom.xml
roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/wrapper/starter/GunsDateConvertAutoConfiguration.java
roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/wrapper/starter/GunsWrapperAutoConfiguration.java
roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-o-monitor/README.md
roses/kernel-o-monitor/monitor-api/README.md
roses/kernel-o-monitor/monitor-api/pom.xml
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/constants/MonitorConstants.java
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/exception/MonitorException.java
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/exception/enums/MonitorExceptionEnum.java
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/CpuInfo.java
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/JvmInfo.java
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/MemInfo.java
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/SysFileInfo.java
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/SysInfo.java
roses/kernel-o-monitor/monitor-business-system-info/README.md
roses/kernel-o-monitor/monitor-business-system-info/pom.xml
roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/SystemHardwareCalculator.java
roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/controller/MonitorStatusController.java
roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/holder/SystemHardwareInfoHolder.java
roses/kernel-o-monitor/monitor-spring-boot-starter/README.md
roses/kernel-o-monitor/monitor-spring-boot-starter/pom.xml
roses/kernel-o-monitor/monitor-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/monitor/starter/GunsMonitorAutoConfiguration.java
roses/kernel-o-monitor/monitor-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-o-monitor/pom.xml
roses/kernel-s-customer/README.md
roses/kernel-s-customer/customer-api/README.md
roses/kernel-s-customer/customer-api/pom.xml
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/CustomerApi.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/OldPasswordValidateApi.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/constants/CustomerConstants.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/exception/CustomerException.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/exception/enums/CustomerExceptionEnum.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/expander/CustomerConfigExpander.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfo.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfoChangeAvatarPasswordRequest.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfoRequest.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserDetailMentalTestRecordDTO.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserDetailMentalTestRecordNlwpDTO.java
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserManagePageResponseDTO.java
roses/kernel-s-customer/customer-business/README.md
roses/kernel-s-customer/customer-business/pom.xml
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/cache/CustomerMemoryCache.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/cache/CustomerRedisCache.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerController.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerInfoController.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerManageController.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/entity/Customer.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/factory/CustomerFactory.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/mapper/CustomerMapper.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/mapper/mapping/CustomerMapper.xml
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/request/CustomerIdRequest.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/request/CustomerRequest.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/OldPasswordValidateService.java
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java
roses/kernel-s-customer/customer-spring-boot-starter/README.md
roses/kernel-s-customer/customer-spring-boot-starter/pom.xml
roses/kernel-s-customer/customer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/customer/starter/GunsCustomerMemoryAutoConfiguration.java
roses/kernel-s-customer/customer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/customer/starter/GunsCustomerRedisAutoConfiguration.java
roses/kernel-s-customer/customer-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-s-customer/pom.xml
roses/kernel-s-demo/README.md
roses/kernel-s-demo/demo-api/README.md
roses/kernel-s-demo/demo-api/pom.xml
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/constants/DemoConstants.java
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/exception/DemoException.java
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/exception/enums/DemoExceptionEnum.java
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/expander/DemoConfigExpander.java
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/util/StartCalcUtil.java
roses/kernel-s-demo/demo-business/README.md
roses/kernel-s-demo/demo-business/pom.xml
roses/kernel-s-demo/demo-business/src/main/java/cn/stylefeng/roses/kernel/demo/interceptor/DemoProfileSqlInterceptor.java
roses/kernel-s-demo/demo-spring-boot-starter/README.md
roses/kernel-s-demo/demo-spring-boot-starter/pom.xml
roses/kernel-s-demo/demo-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/demo/starter/GunsDemoAutoConfiguration.java
roses/kernel-s-demo/demo-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-s-demo/pom.xml
roses/kernel-s-dict/README.md
roses/kernel-s-dict/dict-api/README.md
roses/kernel-s-dict/dict-api/pom.xml
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/DictApi.java
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/constants/DictConstants.java
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/context/DictContext.java
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/enums/DictTypeClassEnum.java
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/exception/DictException.java
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/exception/enums/DictExceptionEnum.java
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/pojo/dict/request/ParentIdsUpdateRequest.java
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/serializer/DictValueSerializer.java
roses/kernel-s-dict/dict-business/README.md
roses/kernel-s-dict/dict-business/pom.xml
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictController.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictTypeController.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/entity/SysDict.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/entity/SysDictType.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictInitializer.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictTypeInitializer.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/DictMapper.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/DictTypeMapper.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/mapping/DictMapper.xml
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/mapping/DictTypeMapper.xml
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/TreeDictInfo.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictRequest.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictTypeRequest.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictService.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictTypeService.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/sqladapter/DictSql.java
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/sqladapter/DictTypeSql.java
roses/kernel-s-dict/dict-spring-boot-starter/README.md
roses/kernel-s-dict/dict-spring-boot-starter/pom.xml
roses/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/GunsDictAutoConfiguration.java
roses/kernel-s-dict/dict-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-s-dict/pom.xml
roses/kernel-s-expand/.gitignore
roses/kernel-s-expand/README.md
roses/kernel-s-expand/expand-api/README.md
roses/kernel-s-expand/expand-api/pom.xml
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/ExpandApi.java
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/constants/ExpandConstants.java
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/DemoEnum.java
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/FieldTypeEnum.java
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/exception/ExpandException.java
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/exception/enums/ExpandExceptionEnum.java
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandDataInfo.java
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandFieldInfo.java
roses/kernel-s-expand/expand-business/README.md
roses/kernel-s-expand/expand-business/pom.xml
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandController.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandDataController.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandFieldController.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpand.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpandData.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpandField.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandDataExceptionEnum.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandExceptionEnum.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandFieldExceptionEnum.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandDataMapper.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandFieldMapper.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandMapper.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandDataMapper.xml
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandFieldMapper.xml
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandMapper.xml
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandDataRequest.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandFieldRequest.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandRequest.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandDataService.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandFieldService.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandService.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandDataServiceImpl.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandFieldServiceImpl.java
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandServiceImpl.java
roses/kernel-s-expand/expand-spring-boot-starter/README.md
roses/kernel-s-expand/expand-spring-boot-starter/pom.xml
roses/kernel-s-expand/expand-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/expand/modular/starter/ExpandAutoConfiguration.java
roses/kernel-s-expand/expand-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-s-expand/pom.xml
roses/kernel-s-group/README.md
roses/kernel-s-group/group-api/README.md
roses/kernel-s-group/group-api/pom.xml
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/GroupApi.java
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/constants/GroupConstants.java
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/exception/GroupException.java
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/exception/enums/GroupExceptionEnum.java
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/pojo/SysGroupDTO.java
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/pojo/SysGroupRequest.java
roses/kernel-s-group/group-business/README.md
roses/kernel-s-group/group-business/pom.xml
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/controller/SysGroupController.java
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/entity/SysGroup.java
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/enums/SysGroupExceptionEnum.java
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/mapper/SysGroupMapper.java
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/mapper/mapping/SysGroupMapper.xml
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/service/SysGroupService.java
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/service/impl/SysGroupServiceImpl.java
roses/kernel-s-group/group-spring-boot-starter/README.md
roses/kernel-s-group/group-spring-boot-starter/pom.xml
roses/kernel-s-group/group-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/group/starter/GroupAutoConfiguration.java
roses/kernel-s-group/group-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-s-group/pom.xml
roses/kernel-s-message/README.md
roses/kernel-s-message/message-api/README.md
roses/kernel-s-message/message-api/pom.xml
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/MessageApi.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/constants/MessageConstants.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/context/MessageContext.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageBusinessTypeEnum.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessagePriorityLevelEnum.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageReadFlagEnum.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageTypeEnum.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/exception/MessageException.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/exception/enums/MessageExceptionEnum.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/expander/WebSocketConfigExpander.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/request/MessageRequest.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/request/MessageSendRequest.java
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/response/MessageResponse.java
roses/kernel-s-message/message-business/README.md
roses/kernel-s-message/message-business/pom.xml
roses/kernel-s-message/message-business/src/main/java/cn/stylefeng/roses/kernel/message/modular/controller/SysMessageController.java
roses/kernel-s-message/message-sdk-db/README.md
roses/kernel-s-message/message-sdk-db/pom.xml
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/MessageDbServiceImpl.java
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/entity/SysMessage.java
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/mapper/SysMessageMapper.java
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/mapper/mapping/SysMessageMapper.xml
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/service/SysMessageService.java
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/service/impl/SysMessageServiceImpl.java
roses/kernel-s-message/message-spring-boot-starter/README.md
roses/kernel-s-message/message-spring-boot-starter/pom.xml
roses/kernel-s-message/message-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/message/starter/GunsMessageAutoConfiguration.java
roses/kernel-s-message/message-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-s-message/pom.xml
roses/kernel-s-migration/migration-api/pom.xml
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/AccessMigrationApi.java
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/constants/MigrationConstants.java
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/enums/MigrationAggregationTypeEnum.java
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/exception/MigrationException.java
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/exception/enums/MigrationExceptionEnum.java
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/expander/MigrationConfigExpander.java
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/pojo/MigrationAggregationPOJO.java
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/pojo/MigrationInfo.java
roses/kernel-s-migration/migration-business-web/pom.xml
roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/controller/MigrationController.java
roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/pojo/MigrationRequest.java
roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/service/MigrationService.java
roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/service/impl/MigrationServiceImpl.java
roses/kernel-s-migration/migration-sdk-data-aggregation/pom.xml
roses/kernel-s-migration/migration-sdk-data-aggregation/src/main/java/cn/stylefeng/roses/kernel/migration/aggregation/scheduling/SchedulingCenter.java
roses/kernel-s-migration/migration-spring-boot-starter/pom.xml
roses/kernel-s-migration/migration-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/migration/starter/spring/MigrationApplicationRunnerImpl.java
roses/kernel-s-migration/migration-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/kernel-s-migration/pom.xml
roses/kernel-s-system/README.md
roses/kernel-s-system/pom.xml
roses/kernel-s-system/system-api/README.md
roses/kernel-s-system/system-api/pom.xml
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/AppServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/DataScopeApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/HomePageServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/MenuServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/NoticeServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/OrganizationServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/PositionServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/ResourceServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleDataScopeServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/SysUserRoleApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/ThemeServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/UserOrgServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/UserServiceApi.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/StatisticsCacheConstants.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/SystemCachesConstants.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/SystemConstants.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/AntdvFrontTypeEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/DetectModeEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/DevopsCheckStatusEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/LinkOpenTypeEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/OrgApproverTypeEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/OrgTypeEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/UserGroupSelectTypeEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/UserStatusEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/SystemModularException.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/app/AppExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/log/LogExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/menu/SysMenuButtonExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/menu/SysMenuExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/notice/NoticeExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/DataScopeExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/OrganizationExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/PositionExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/role/SysRoleExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateFieldExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateRelExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserDataScopeExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserOrgExceptionEnum.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/format/UserFormatProcess.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/app/SysAppRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/app/SysAppResult.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/home/HomeCompanyInfo.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/CurrentUserInfoResponse.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/ValidateTokenRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexMenuInfo.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexRoleInfo.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexUserInfoV3.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/MenuAndButtonTreeResponse.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuAddEditRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonAddEditRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuResourceRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdMenuSelectTreeNode.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdSysMenuDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdvMenuAuthorityItem.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdvMenuItem.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiAppIndexMenusVO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiIndexMenuTreeNode.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiMenuAndButtonTreeResponse.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/notice/SysNoticeRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/BindUserItem.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/DataScopeDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationAddUpdateRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrPositionDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrPositionRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/OrganizationTreeNode.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/LayuiApiResourceTreeNode.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/ResourceRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/RoleAuthorizeInfo.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleMenuButtonDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleMenuDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleResourceDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleAddEditRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleDataScopeRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleGrantMenuAndButtonRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleMenuButtonRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateDataDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateFieldRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateRelRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/OAuth2AuthUserDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/OnlineUserDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserAdminDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserOrgDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/UserLoginInfoDTO.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/UserSelectTreeNode.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/OnlineUserRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysAdminRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserAddUpdateRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserDeleteRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserPageRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserWorkStatusRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserDataScopeRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserOrgRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserRoleRequest.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/usergroup/SelectItem.java
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/util/DataScopeUtil.java
roses/kernel-s-system/system-business-app/README.md
roses/kernel-s-system/system-business-app/pom.xml
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/controller/SysAppController.java
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/entity/SysApp.java
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/mapper/SysAppMapper.java
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/mapper/mapping/SysAppMapper.xml
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/service/SysAppService.java
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/service/impl/SysAppServiceImpl.java
roses/kernel-s-system/system-business-home/pom.xml
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/aop/InterfaceStatisticsAop.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/cache/InterfaceStatisticsMemoryCache.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/cache/InterfaceStatisticsRedisCache.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/context/StatisticsUrlContext.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/HomePageController.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/SysStatisticsController.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsCount.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsUrl.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/enums/SysStatisticsCountExceptionEnum.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/enums/SysStatisticsUrlExceptionEnum.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsCountMapper.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsUrlMapper.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsCountMapper.xml
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsUrlMapper.xml
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/OnlineUserStat.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsCountRequest.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsUrlRequest.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/HomePageService.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/SysStatisticsCountService.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/SysStatisticsUrlService.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsCountServiceImpl.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsUrlServiceImpl.java
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/timer/InterfaceStatisticsTimer.java
roses/kernel-s-system/system-business-menu/README.md
roses/kernel-s-system/system-business-menu/pom.xml
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/constants/MenuButtonConstant.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuButtonController.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuController.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuResourceController.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenu.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuButton.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuResource.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/AntdMenusFactory.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/Antdv3MenusFactory.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/LayuiMenusFactory.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/MenuButtonFactory.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/MenuTypeFactory.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/listener/MenuResourceUpdateListener.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuButtonMapper.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuMapper.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuResourceMapper.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuButtonMapper.xml
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuMapper.xml
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuResourceMapper.xml
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuButtonService.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuResourceService.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuService.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuButtonServiceImpl.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuResourceServiceImpl.java
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java
roses/kernel-s-system/system-business-notice/README.md
roses/kernel-s-system/system-business-notice/pom.xml
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/controller/SysNoticeController.java
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/entity/SysNotice.java
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/mapper/SysNoticeMapper.java
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/mapper/mapping/SysNoticeMapper.xml
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/service/SysNoticeService.java
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/service/impl/SysNoticeServiceImpl.java
roses/kernel-s-system/system-business-organization/README.md
roses/kernel-s-system/system-business-organization/pom.xml
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrgApproverController.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrganizationController.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrPositionController.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrOrgApprover.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrOrganization.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrPosition.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/enums/HrOrgApproverExceptionEnum.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/factory/OrganizationFactory.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrOrgApproverMapper.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrOrganizationMapper.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrPositionMapper.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrOrgApproverMapper.xml
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrOrganizationMapper.xml
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrPositionMapper.xml
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/pojo/request/HrOrgApproverRequest.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/DataScopeService.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrOrgApproverService.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrOrganizationService.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrPositionService.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrgApproverServiceImpl.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrganizationServiceImpl.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrPositionServiceImpl.java
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/wrapper/OrgExpandWrapper.java
roses/kernel-s-system/system-business-resource/README.md
roses/kernel-s-system/system-business-resource/pom.xml
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/cache/MemoryResourceCache.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/cache/RedisResourceCache.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ResourceController.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ResourceReportController.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/entity/SysResource.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/factory/ResourceFactory.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/mapper/SysResourceMapper.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/mapper/mapping/SysResourceMapper.xml
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/pojo/ResourceTreeNode.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/SysResourceService.java
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/impl/SysResourceServiceImpl.java
roses/kernel-s-system/system-business-role/README.md
roses/kernel-s-system/system-business-role/pom.xml
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleDataScopeMemoryCache.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleDataScopeRedisCache.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleMemoryCache.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleRedisCache.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleResourceMemoryCache.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleResourceRedisCache.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleAuthController.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleController.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRole.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleDataScope.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleMenu.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleMenuButton.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleResource.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/listener/RoleResourceUpdateListener.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleDataScopeMapper.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMapper.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMenuButtonMapper.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMenuMapper.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleResourceMapper.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleDataScopeMapper.xml
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMapper.xml
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMenuButtonMapper.xml
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMenuMapper.xml
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleResourceMapper.xml
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleDataScopeService.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleMenuButtonService.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleMenuService.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleDataScopeServiceImpl.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleMenuButtonServiceImpl.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleMenuServiceImpl.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java
roses/kernel-s-system/system-business-theme/pom.xml
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/cache/ThemeMemoryCache.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/cache/ThemeRedisCache.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/clean/ThemeConfigRefresh.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeApiController.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeController.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateController.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateFieldController.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateRelController.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysTheme.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplate.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplateField.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplateRel.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/enums/ThemeFieldTypeEnum.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/factory/DefaultThemeFactory.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeMapper.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateFieldMapper.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateMapper.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateRelMapper.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeMapper.xml
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateFieldMapper.xml
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateMapper.xml
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateRelMapper.xml
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/pojo/DefaultTheme.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeService.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateFieldService.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateRelService.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateService.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeServiceImpl.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateFieldServiceImpl.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateRelServiceImpl.java
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateServiceImpl.java
roses/kernel-s-system/system-business-user/README.md
roses/kernel-s-system/system-business-user/pom.xml
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/SysUserMemoryCache.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/SysUserRedisCache.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserOrgMemoryCache.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserOrgRedisCache.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserRoleMemoryCache.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserRoleRedisCache.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/KaptchaController.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/LoginController.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/OnlineUserController.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/PersonalInfoController.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserAdminController.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserGroupController.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUser.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserDataScope.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserGroup.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserGroupDetail.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserOrg.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserRole.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserGroupDetailExceptionEnum.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserGroupExceptionEnum.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/OnlineUserCreateFactory.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/SysUserCreateFactory.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserGroupFactory.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserLoginInfoFactory.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserDataScopeMapper.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserGroupDetailMapper.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserGroupMapper.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserMapper.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserOrgMapper.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserRoleMapper.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserDataScopeMapper.xml
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserGroupDetailMapper.xml
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserGroupMapper.xml
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserMapper.xml
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserOrgMapper.xml
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserRoleMapper.xml
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserGroupDetailRequest.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserGroupRequest.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/provider/LoginUserProvider.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/IndexUserInfoService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserAdminService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserDataScopeService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserGroupDetailService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserGroupService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserOrgService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserRoleService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/TenantPrefixService.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/IndexUserInfoServiceImpl.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserDataScopeServiceImpl.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserGroupDetailServiceImpl.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserGroupServiceImpl.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserOrgServiceServiceImpl.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserRoleServiceImpl.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/UserExpandWrapper.java
roses/kernel-s-system/system-integration-beetl/README.md
roses/kernel-s-system/system-integration-beetl/pom.xml
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/CustomErrorView.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/BeetlAutoConfiguration.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/BeetlErrorViewAutoConfiguration.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/CustomBeetlGroupUtilConfiguration.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/consts/BeetlConstants.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/consts/DictTagConstants.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/enums/SelectTagHeadTypeEnum.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/expander/BeetlConfigExpander.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictBaseTag.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictCheckBoxTag.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictRadioTag.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictSelectTag.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/api/ApiViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/app/AppViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/common/CommonViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/common/pojo/CommonTreeRequest.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/config/ConfigViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dashboard/DashboardViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dataCenter/dataCenterViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/datasource/DataSourceViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dict/DictTypeViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dict/DictViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/error/ErrorViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/file/FileViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/i18n/TranslationViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/index/controller/IndexViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/index/service/IndexService.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/log/LogViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/log/LoginLogViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/login/LoginViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/menu/MenuButtonViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/menu/MenuViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/message/MessageViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/monitor/MonitorController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/notice/NoticeViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/online/OnlineUserViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/organization/OrganizationViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/package-info.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/position/PositionViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/resource/ResourceViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/role/RoleViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/timer/TimersViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/user/UserViewController.java
roses/kernel-s-system/system-integration-beetl/src/main/resources/META-INF/spring.factories
roses/kernel-s-system/system-integration-rest/README.md
roses/kernel-s-system/system-integration-rest/pom.xml
roses/kernel-s-system/system-integration-rest/src/main/java/cn/stylefeng/roses/kernel/system/integration/ErrorStaticJsonView.java
roses/kernel-s-system/system-integration-rest/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/RestErrorViewAutoConfiguration.java
roses/kernel-s-system/system-integration-rest/src/main/resources/META-INF/spring.factories
roses/kernel-s-system/system-spring-boot-starter/README.md
roses/kernel-s-system/system-spring-boot-starter/pom.xml
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/GunsSystemHomeStatisticsAutoConfiguration.java
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsResourceMemoryCacheAutoConfiguration.java
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsResourceRedisCacheAutoConfiguration.java
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsSystemMemoryCacheAutoConfiguration.java
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsSystemRedisCacheAutoConfiguration.java
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/init/InitAdminService.java
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/listener/SuperAdminInitListener.java
roses/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories
roses/pom.xml
sql/clear_data_20240229.sql |