diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/aspect/DeleteImeiLog.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/aspect/DeleteImeiLog.java new file mode 100644 index 0000000..409dc17 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/aspect/DeleteImeiLog.java @@ -0,0 +1,146 @@ +package com.ecell.internationalize.system.aspect; +import com.ecell.internationalize.common.core.domain.UserLogin; +import com.ecell.internationalize.common.core.utils.StringUtils; +import com.ecell.internationalize.common.core.utils.ip.IpUtils; +import com.ecell.internationalize.common.core.utils.poi.ExcelUtil; +import com.ecell.internationalize.common.core.utils.uuid.UUID; +import com.ecell.internationalize.common.security.utils.SecurityUtils; +import com.ecell.internationalize.system.annotation.DelImeiLog; +import com.ecell.internationalize.system.constant.DeviceModelConstants; +import com.ecell.internationalize.system.entity.DelimeiLogInfo; +import com.ecell.internationalize.system.entity.dto.DeviceDTO; +import com.ecell.internationalize.system.service.impl.DelimeiLogInfoServiceImpl; +import com.ecell.internationalize.system.utils.HttpServletUtil; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.util.*; + +@Aspect +@Component +public class DeleteImeiLog { + private static final Logger logg = LoggerFactory.getLogger(DeleteImeiLog.class); + @Autowired + private DelimeiLogInfoServiceImpl delimeiLogInfoService; + + /** + * 处理完请求后执行 + * + * @param joinPoint 切点 + */ + @AfterReturning(pointcut = "@annotation(controllerLog)", returning = "jsonResult") + public void doAfterReturning(JoinPoint joinPoint, DelImeiLog controllerLog, Object jsonResult) + { + handleLog(joinPoint, controllerLog, null, jsonResult); + } + + + protected void handleLog(final JoinPoint joinPoint, DelImeiLog controllerLog, final Exception e, Object jsonResult) + { + try + { + // *========数据库日志=========*// + DelimeiLogInfo info =new DelimeiLogInfo(); + info.setImeiDelId(UUID.fastUUID().toString(true)); + info.setCreateTime(new Date()); + // 请求的地址 + String ip = IpUtils.getIpAddr(HttpServletUtil.getRequest()); + info.setIp(ip); + String username = SecurityUtils.getUsername(); + UserLogin userLogin = SecurityUtils.getUserLogin(); + if (StringUtils.isNotEmpty(userLogin.getRoles()) && userLogin.getRoles().size()>0){ + info.setUserRole(Arrays.toString(userLogin.getRoles().toArray(new String[0]))); + }else { + info.setUserRole(""); + } + if (StringUtils.isNotBlank(username)) + { + info.setLoginAccount(username); + } + // 处理设置注解上的参数 + getControllerMethodDescription(joinPoint, controllerLog, info, jsonResult); + // 保存数据库 + //imeiLogInfoService.save(info); + delimeiLogInfoService.saveDelImeiLog(info); + + } + catch (Exception exp) + { + // 记录本地异常日志 + logg.error("==通知异常=="); + logg.error("异常信息:{}", exp.getMessage()); + + exp.printStackTrace(); + } + } + + private void getControllerMethodDescription(JoinPoint joinPoint, DelImeiLog controllerLog, DelimeiLogInfo info, Object jsonResult) { + //根据id批量删除 + if (DeviceModelConstants.ZERO.equals(controllerLog.delType())){ + info.setUnbinding(DeviceModelConstants.DELLETE_MODE_ZERO); + argsArrayToString(joinPoint.getArgs(),info); + }else { + info.setUnbinding(DeviceModelConstants.DELLETE_MODE_ONE); + //根据导入的imei进行删除 + argsArrayTwoToString(joinPoint.getArgs(),info,jsonResult); + + } + + + } + + private void argsArrayToString(Object[] paramsArray, DelimeiLogInfo info) { + StringBuilder builder =new StringBuilder(); + List list =new ArrayList<>(); + if (paramsArray != null && paramsArray.length > 0){ + if (paramsArray[0] instanceof String ){ + list= Arrays.asList((String) paramsArray[0]); + }else { + list =(List) paramsArray[0]; + } + + if (StringUtils.isNotEmpty(list) && list.size()>0){ + builder.append("共有:"+list.size()+"条:"); + for (String s : list) { + builder.append("
"+s+"
").append(","); + } + + } + + } + info.setOperationDescribe(builder.toString()); + + } + + private void argsArrayTwoToString(Object[] paramsArray, DelimeiLogInfo info, Object jsonResult) { + List userList = Collections.emptyList(); + StringBuilder builder =new StringBuilder(); + if (paramsArray != null && paramsArray.length > 0) { + try { + + MultipartFile file = (MultipartFile) paramsArray[0]; + if (StringUtils.isNotNull(file)) { + ExcelUtil util = new ExcelUtil(DeviceDTO.class); + userList = util.importExcel(file.getInputStream()); + if (StringUtils.isNotEmpty(userList) && userList.size()>0){ + for (DeviceDTO deviceDTO : userList) { + builder.append("
"+deviceDTO.getImei()+"
").append(","); + } + } + + } + } catch (Exception e) { + logg.info("参数异常:{}", e.getMessage()); + } + } + info.setOperationDescribe(builder.toString()); + } + + +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/config/AutoGenerateConfig.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/config/AutoGenerateConfig.java new file mode 100644 index 0000000..522f0a3 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/config/AutoGenerateConfig.java @@ -0,0 +1,91 @@ +package com.ecell.internationalize.system.config; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; + +/** + * 自动生成 实体,DAO,service配置 + * @Title: AutoGenerateConfig + * @Author: liy + * @Date: 2022/7/6 10:55 + * @Version:1.0 + */ +public class AutoGenerateConfig { + public static void autoGenerate() { + // Step1:代码生成器 + AutoGenerator mpg = new AutoGenerator(); + // Step2:全局配置 + GlobalConfig gc = new GlobalConfig(); + // 填写代码生成的目录(需要修改) + // String projectPath = "F:\\dev\\yisai-Cloud\\yisai-modules\\yisai-system"; + String projectPath= "F:\\dev\\yisai-Cloud\\yisai-modules\\yisai-app"; + // 拼接出代码最终输出的目录 + gc.setOutputDir(projectPath + "/src/main/java"); + //实体属性 Swagger2 注解 + gc.setSwagger2(true); + // 配置开发者信息(可选)(需要修改) + // gc.setAuthor("liy"); + // 配置是否打开目录,false 为不打开(可选) + gc.setOpen(false); + // 默认生成的 service 会有 I 前缀,这样就没有 + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + // Step3:数据源配置(需要修改) + DataSourceConfig dsc = new DataSourceConfig(); + // 配置数据库 url 地址 + dsc.setUrl("jdbc:mysql://192.168.0.106:3306/ys-business?useUnicode=true&characterEncoding=utf8"); + // 配置数据库驱动 + dsc.setDriverName("com.mysql.cj.jdbc.Driver"); + // 配置数据库连接用户名 + dsc.setUsername("root"); + // 配置数据库连接密码 + dsc.setPassword("123456"); + mpg.setDataSource(dsc); + + // Step:4:包配置 + PackageConfig pc = new PackageConfig(); + // 配置父包名(需要修改) + pc.setParent("com.yisai.app"); + // pc.setParent("com.yisai.system"); + // 配置模块名(需要修改) + // pc.setModuleName(""); + // 配置 entity 包名 + pc.setEntity("entity"); + // 配置 mapper 包名 + pc.setMapper("mapper"); + // 配置 service 包名 + pc.setService("service"); + // 配置 controller 包名 + pc.setController("controller"); + mpg.setPackageInfo(pc); + + // Step5:策略配置(数据库表配置) + StrategyConfig strategy = new StrategyConfig(); + // 指定表名(可以同时操作多个表,使用 , 隔开)(需要修改) + strategy.setInclude("app_unbind_log"); + // 配置数据表与实体类名之间映射的策略 + strategy.setNaming(NamingStrategy.underline_to_camel); + // 配置数据表的字段与实体类的属性名之间映射的策略 + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + // 配置 lombok 模式 + strategy.setEntityLombokModel(true); + // 配置 rest 风格的控制器(@RestController) + strategy.setRestControllerStyle(true); + // 配置驼峰转连字符 + strategy.setControllerMappingHyphenStyle(true); + // 配置表前缀,生成实体时去除表前缀 + // 此处的表名为 test_mybatis_plus_user,模块名为 test_mybatis_plus,去除前缀后剩下为 user。 + strategy.setTablePrefix(pc.getModuleName() + "_"); + mpg.setStrategy(strategy); + + // Step6:执行代码生成操作 + mpg.execute(); + } + + public static void main(String[] args) { + autoGenerate(); + } +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/controller/ChannelController.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/controller/ChannelController.java new file mode 100644 index 0000000..edd9db5 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/controller/ChannelController.java @@ -0,0 +1,91 @@ +package com.ecell.internationalize.system.controller; +import com.ecell.internationalize.common.core.utils.locale.LocaleUtil; +import com.ecell.internationalize.common.core.utils.uuid.UUID; +import com.ecell.internationalize.common.core.web.domain.AjaxResult; +import com.ecell.internationalize.common.security.utils.SecurityUtils; +import com.ecell.internationalize.common.system.annotation.SystemLog; +import com.ecell.internationalize.common.system.constant.FieldConstant; +import com.ecell.internationalize.system.entity.Channel; +import com.ecell.internationalize.system.service.ChannelService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Map; + +/** + *

+ * 渠道管理 前端控制器 + *

+ * + * @author liy + * @since 2022-07-14 + */ +@Api(value="渠道管理",tags={"渠道管理接口"}) +@RestController +@RequestMapping("/channel") +public class ChannelController { + @Autowired + private ChannelService channelService; + /** + * 渠道管理分页查询 + * @Author liy + * @Date 2022/7/15 16:38 + * @param map 分页条件查询体 + * @Return AjaxResult + */ + @ApiOperation("条件分页查询渠道管理信息") + @PostMapping("manage/list") + public AjaxResult queryAllByPage(@RequestBody Map map){ + return AjaxResult.success(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS),channelService.findAllByPage(map)); + } + /** + * 渠道管理删除 + * @Author liy + * @Date 2022/7/15 16:38 + * @param channel 实体类 + * @Return AjaxResult + */ + @ApiOperation("渠道管理删除") + @SystemLog(msg =FieldConstant.CHANNEL_MANAGE,operation = FieldConstant.DELETE_OPERATOR) + @PostMapping("manage/del") + public AjaxResult changeStatusOrDelUser(@RequestBody @ApiParam(value="传整个对象,修改其中delFlag字段,(0:删除,1:正常)",required=true) Channel channel){ + return AjaxResult.success(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS),channelService.updateById(channel)); + } + /** + * 渠道管理新增 + * @Author liy + * @Date 2022/7/15 17:38 + * @param channel 类别实体 + * @Return AjaxResult + */ + @ApiOperation("渠道管理新增") + @SystemLog(msg =FieldConstant.CHANNEL_MANAGE,operation = FieldConstant.SAVE_OPERATOR) + @PostMapping("manage/save") + public AjaxResult save(@RequestBody @Valid Channel channel){ + String id= UUID.randomUUID().toString(true); + channel.setId(id); + channel.setCreateUser(SecurityUtils.getUsername()); + return AjaxResult.success(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS),channelService.save(channel)); + } + /** + * 渠道管理修改 + * @Author liy + * @Date 2022/7/15 17:38 + * @param channel 类别实体 + * @Return AjaxResult + */ + @ApiOperation("渠道管理修改") + @SystemLog(msg =FieldConstant.CHANNEL_MANAGE,operation = FieldConstant.UPDATE_OPERATOR) + @PostMapping("manage/update") + public AjaxResult update(@RequestBody @Valid Channel channel){ + return AjaxResult.success(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS),channelService.updateById(channel)); + } +} + diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/controller/CheckVersionController.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/controller/CheckVersionController.java new file mode 100644 index 0000000..e43bf79 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/controller/CheckVersionController.java @@ -0,0 +1,127 @@ +package com.ecell.internationalize.system.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ecell.internationalize.common.core.utils.locale.LocaleUtil; +import com.ecell.internationalize.common.core.utils.uuid.UUID; +import com.ecell.internationalize.common.core.web.domain.AjaxResult; +import com.ecell.internationalize.common.security.utils.SecurityUtils; +import com.ecell.internationalize.common.system.annotation.SystemLog; +import com.ecell.internationalize.common.system.constant.FieldConstant; +import com.ecell.internationalize.common.system.entity.CheckVersionUpload; +import com.ecell.internationalize.common.system.utlis.UploadUtil; +import com.ecell.internationalize.system.entity.CheckVersion; +import com.ecell.internationalize.system.entity.dto.CheckVersionDto; +import com.ecell.internationalize.system.service.CheckVersionService; +import com.ecell.internationalize.system.utils.Rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.Date; +import java.util.List; + +/** + *

+ * 检查版本更新表 前端控制器 + *

+ * + * @author ${author} + * @since 2022-10-27 + */ +@Api(value="检查版本更新",tags={"检查版本更新接口"}) +@RestController +@RequestMapping("/check_version") +public class CheckVersionController { + @Autowired + private CheckVersionService checkVersionService; + @ApiOperation("条件分页查询版本更新信息") + @PostMapping("version/list") + public Rest> queryAllVersion(@RequestBody CheckVersionDto checkVersionDto){ + return Rest.ok(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS),checkVersionService.findAllByPage(checkVersionDto)); + } + /** + * 版本更新新增 + * @Author liy + * @Date 2022/7/14 16:38 + * @Return AjaxResult + */ + @ApiOperation("版本更新新增") + @SystemLog(msg =FieldConstant.VERSION_UPDATE,operation = FieldConstant.SAVE_OPERATOR) + @PostMapping("version/save") + public Rest versionSave(@RequestBody CheckVersion checkVersion){ + LambdaQueryWrapper lambdaQueryWrapper=new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(CheckVersion::getStatus,checkVersion.getStatus()); + lambdaQueryWrapper.eq(CheckVersion::getAppPackage,checkVersion.getAppPackage()); + lambdaQueryWrapper.eq(CheckVersion::getVersionNum,checkVersion.getVersionNum()); + CheckVersion version = checkVersionService.getBaseMapper().selectOne(lambdaQueryWrapper); + if (null!=version){ + return Rest.fail(LocaleUtil.getMessage(FieldConstant.VERSION_HAS_EXIT)); + } + String id= UUID.randomUUID().toString(true); + checkVersion.setId(id); + checkVersion.setCreateUser(SecurityUtils.getUsername()); + checkVersion.setCreateTime(new Date()); + checkVersionService.save(checkVersion); + return Rest.ok(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS)); + } + /** + * 版本更新修改 + * @Author liy + * @Date 2022/7/14 16:38 + * @Return AjaxResult + */ + @ApiOperation("版本更新修改") + @SystemLog(msg =FieldConstant.VERSION_UPDATE,operation = FieldConstant.UPDATE_OPERATOR) + @PostMapping("version/update") + public Rest versionUpdate(@RequestBody CheckVersion checkVersion) { + + LambdaQueryWrapper lambdaQueryWrapper=new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(CheckVersion::getStatus,checkVersion.getStatus()); + lambdaQueryWrapper.eq(CheckVersion::getAppPackage,checkVersion.getAppPackage()); + lambdaQueryWrapper.eq(CheckVersion::getVersionNum,checkVersion.getVersionNum()); + CheckVersion version = checkVersionService.getBaseMapper().selectOne(lambdaQueryWrapper); + if (null!=version && !version.getId().equals(checkVersion.getId())){ + return Rest.fail(LocaleUtil.getMessage(FieldConstant.VERSION_HAS_EXIT)); + } + checkVersion.setUpdateTime(new Date()); + checkVersion.setUpdateUser(SecurityUtils.getUsername()); + checkVersionService.updateById(checkVersion); + return Rest.ok(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS)); + } + + /** + * 版本更新删除 + * @Author liy + * @Date 2022/7/15 16:38 + * @Return AjaxResult + */ + @ApiOperation("版本更新删除") + @SystemLog(msg =FieldConstant.VERSION_UPDATE,operation = FieldConstant.DELETE_OPERATOR) + @PostMapping("version/del") + public Rest versionDel(@RequestBody List ids){ + checkVersionService.getBaseMapper().deleteBatchIds(ids); + return Rest.ok(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS)); + } + + /** + * APK文件上传 + * @Author liy + * @Date 2022/7/14 16:38 + * @Return AjaxResult + */ + @ApiOperation("APK文件上传返回AppUrl和APK名称") + @PostMapping("version/upload") + public AjaxResult versionUpload(@RequestParam(value = "file") MultipartFile file) throws IOException { + CheckVersionUpload checkVersionUpload = UploadUtil.versionUpload(file); + if (!"apk".equals(checkVersionUpload.getGetSuffix())){ + return AjaxResult.error(LocaleUtil.getMessage(FieldConstant.VERSION_APK_UPLOAD)); + } + return AjaxResult.success(LocaleUtil.getMessage(FieldConstant.MESSAGES_SUCCESS),checkVersionUpload); + } +} + diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/Channel.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/Channel.java new file mode 100644 index 0000000..2d15136 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/Channel.java @@ -0,0 +1,77 @@ +package com.ecell.internationalize.system.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 渠道管理 + *

+ * + * @author liy + * @since 2022-07-14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("channel") +public class Channel implements Serializable { + +private static final long serialVersionUID=1L; + + /** + * 主键Id + */ + @TableId("id") + private String id; + + /** + * 删除标识(0:已删除,1:正常) + */ + private String delFlag; + + /** + * 创建人 + */ + private String createUser; + /** + * 创建时间 + */ + @TableField(value = "create_time",fill = FieldFill.INSERT) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + /** + * 修改人 + */ + private String updateUser; + /** + * 修改时间 + */ + @TableField(value = "update_time",fill = FieldFill.UPDATE) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 渠道商 + */ + @NotBlank(message = "渠道商名称不能为空") + private String channelFirm; + + /** + * APP渠道标识 + */ + @NotBlank(message = "APP渠道标识不能为空") + private String channelIdentify; + + +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/CheckVersion.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/CheckVersion.java new file mode 100644 index 0000000..02e7937 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/CheckVersion.java @@ -0,0 +1,71 @@ +package com.ecell.internationalize.system.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 检查版本更新表 + *

+ * + * @author ${author} + * @since 2022-10-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CheckVersion对象", description="检查版本更新表") +public class CheckVersion implements Serializable { + +private static final long serialVersionUID=1L; + + @ApiModelProperty(example = "主键Id") + private String id; + + @ApiModelProperty(example = "创建人") + private String createUser; + + @ApiModelProperty(example = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date createTime; + + @ApiModelProperty(example = "修改人") + private String updateUser; + + @ApiModelProperty(example = "修改时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date updateTime; + + @ApiModelProperty(example = "状态(0:禁用,1正常)") + private String status; + + @ApiModelProperty(example = "APP包名称") + private String appPackage; + + @ApiModelProperty(example = "APP url") + private String appUrl; + + @ApiModelProperty(example = "apk名称") + private String apkName; + + @ApiModelProperty(example = "是否强制更新(0:否,1:是)") + private String forceUpdate; + + @ApiModelProperty(example = "版本号") + private String versionNum; + + @ApiModelProperty(example = "版本说明") + private String versionExplain; + + @ApiModelProperty(example = "备注") + private String remark; + + +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/api/dto/DelDeviceAlarmDto.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/api/dto/DelDeviceAlarmDto.java new file mode 100644 index 0000000..4326fe4 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/api/dto/DelDeviceAlarmDto.java @@ -0,0 +1,31 @@ +package com.ecell.internationalize.system.entity.api.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * 闹钟设置表 + *

+ * + * @author liy + * @since 2022-09-07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class DelDeviceAlarmDto implements Serializable { + +private static final long serialVersionUID=1L; + + @ApiModelProperty(example = "主键Id") + private String id; + + @ApiModelProperty(example = "设备imei") + private String imei; + +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/api/dto/DelDeviceDisable.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/api/dto/DelDeviceDisable.java new file mode 100644 index 0000000..dd309df --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/api/dto/DelDeviceDisable.java @@ -0,0 +1,32 @@ +package com.ecell.internationalize.system.entity.api.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * 上课禁用(免打扰设置)表 + *

+ * + * @author ${author} + * @since 2022-09-13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class DelDeviceDisable implements Serializable { + +private static final long serialVersionUID=1L; + + @ApiModelProperty(example = "主键Id") + private String id; + + @ApiModelProperty(example = "设备imei") + private String imei; + + +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/dto/CheckVersionDto.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/dto/CheckVersionDto.java new file mode 100644 index 0000000..26185bc --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/entity/dto/CheckVersionDto.java @@ -0,0 +1,32 @@ +package com.ecell.internationalize.system.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 检查版本更新表 + *

+ * + * @author ${author} + * @since 2022-10-27 + */ +@Data +public class CheckVersionDto implements Serializable { + +private static final long serialVersionUID=1L; + + @ApiModelProperty(example = "当前页") + private Integer current; + + @ApiModelProperty(example = "每页显示多少条") + private Integer pageSize; + + @ApiModelProperty(example = "APP包名称") + private String appPackage; + + @ApiModelProperty(example = "apk名称") + private String apkName; +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/mapper/ChannelMapper.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/mapper/ChannelMapper.java new file mode 100644 index 0000000..dfdca42 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/mapper/ChannelMapper.java @@ -0,0 +1,16 @@ +package com.ecell.internationalize.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ecell.internationalize.system.entity.Channel; + +/** + *

+ * 渠道管理 Mapper 接口 + *

+ * + * @author liy + * @since 2022-07-14 + */ +public interface ChannelMapper extends BaseMapper { + +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/mapper/CheckVersionMapper.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/mapper/CheckVersionMapper.java new file mode 100644 index 0000000..2ee9352 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/mapper/CheckVersionMapper.java @@ -0,0 +1,17 @@ +package com.ecell.internationalize.system.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ecell.internationalize.system.entity.CheckVersion; + +/** + *

+ * 检查版本更新表 Mapper 接口 + *

+ * + * @author ${author} + * @since 2022-10-27 + */ +public interface CheckVersionMapper extends BaseMapper { + +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/ChannelService.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/ChannelService.java new file mode 100644 index 0000000..a6d0273 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/ChannelService.java @@ -0,0 +1,26 @@ +package com.ecell.internationalize.system.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ecell.internationalize.system.entity.Channel; + +import java.util.Map; + +/** + *

+ * 渠道管理 服务类 + *

+ * + * @author liy + * @since 2022-07-14 + */ +public interface ChannelService extends IService { + /** + * 渠道管理分页查询 + * @Author liy + * @Date 2022/7/15 16:42 + * @param map 分页查询体 + * @return IPage + */ + IPage findAllByPage(Map map); +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/CheckVersionService.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/CheckVersionService.java new file mode 100644 index 0000000..121c38c --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/CheckVersionService.java @@ -0,0 +1,25 @@ +package com.ecell.internationalize.system.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ecell.internationalize.system.entity.CheckVersion; +import com.ecell.internationalize.system.entity.dto.CheckVersionDto; + +/** + *

+ * 检查版本更新表 服务类 + *

+ * + * @author ${author} + * @since 2022-10-27 + */ +public interface CheckVersionService extends IService { + /** + * 检查版本更新表r分页查询 + * @Author liy + * @Date 2022/7/14 16:42 + * @param checkVersionDto 分页查询体 + * @return IPage + */ + IPage findAllByPage(CheckVersionDto checkVersionDto); +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/impl/ChannelServiceImpl.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/impl/ChannelServiceImpl.java new file mode 100644 index 0000000..da11c5c --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/impl/ChannelServiceImpl.java @@ -0,0 +1,42 @@ +package com.ecell.internationalize.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ecell.internationalize.common.system.constant.FieldConstant; +import com.ecell.internationalize.system.entity.Channel; +import com.ecell.internationalize.system.mapper.ChannelMapper; +import com.ecell.internationalize.system.service.ChannelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 渠道管理 服务实现类 + *

+ * + * @author liy + * @since 2022-07-14 + */ +@Service +public class ChannelServiceImpl extends ServiceImpl implements ChannelService { + @Autowired + private ChannelMapper channelMapper; + /** + * 渠道管理分页查询 + * @Author liy + * @Date 2022/7/15 16:42 + * @param map 分页查询体 + * @return IPage + */ + @Override + public IPage findAllByPage(Map map) { + Page page=new Page<>(Integer.parseInt(map.get(FieldConstant.CURRENT).toString()),Integer.parseInt(map.get(FieldConstant.SIZE).toString())); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Channel::getDelFlag, FieldConstant.MATH_ONE); + return channelMapper.selectPage(page,queryWrapper); + } +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/impl/CheckVersionServiceImpl.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/impl/CheckVersionServiceImpl.java new file mode 100644 index 0000000..6d74553 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/service/impl/CheckVersionServiceImpl.java @@ -0,0 +1,39 @@ +package com.ecell.internationalize.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ecell.internationalize.system.entity.CheckVersion; +import com.ecell.internationalize.system.entity.dto.CheckVersionDto; +import com.ecell.internationalize.system.mapper.CheckVersionMapper; +import com.ecell.internationalize.system.service.CheckVersionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

+ * 检查版本更新表 服务实现类 + *

+ * + * @author ${author} + * @since 2022-10-27 + */ +@Service +public class CheckVersionServiceImpl extends ServiceImpl implements CheckVersionService { + @Autowired + private CheckVersionMapper checkVersionMapper; + @Override + public IPage findAllByPage(CheckVersionDto checkVersionDto) { + Page page=new Page<>(checkVersionDto.getCurrent(),checkVersionDto.getPageSize()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (null!=checkVersionDto.getAppPackage() && !"".equals(checkVersionDto.getAppPackage())){ + lambdaQueryWrapper.eq(CheckVersion::getAppPackage,checkVersionDto.getAppPackage()); + } + if (null!=checkVersionDto.getApkName() && !"".equals(checkVersionDto.getApkName())){ + lambdaQueryWrapper.eq(CheckVersion::getApkName,checkVersionDto.getApkName()); + } + lambdaQueryWrapper.orderByDesc(CheckVersion::getCreateTime); + return checkVersionMapper.selectPage(page,lambdaQueryWrapper); + } +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/utils/DateUtil.java b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/utils/DateUtil.java new file mode 100644 index 0000000..9bd6fd1 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/java/com/ecell/internationalize/system/utils/DateUtil.java @@ -0,0 +1,193 @@ +package com.ecell.internationalize.system.utils; + +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.lang.management.ManagementFactory; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.*; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +/** + * @author borui + */ +public class DateUtil extends org.apache.commons.lang3.time.DateUtils { + + public static String YYYY = "yyyy"; + + public static String YYYY_MM = "yyyy-MM"; + + public static String YYYY_MM_DD = "yyyy-MM-dd"; + + public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; + + public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + + private static String[] parsePatterns = { + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", + "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; + + /** + * 获取当前Date型日期 + * + * @return Date() 当前日期 + */ + public static Date getNowDate() + { + return new Date(); + } + + /** + * 获取当前日期, 默认格式为yyyy-MM-dd + * + * @return String + */ + public static String getDate() + { + return dateTimeNow(YYYY_MM_DD); + } + + public static final String getTime() + { + return dateTimeNow(YYYY_MM_DD_HH_MM_SS); + } + + public static final String dateTimeNow() + { + return dateTimeNow(YYYYMMDDHHMMSS); + } + + public static final String dateTimeNow(final String format) + { + return parseDateToStr(format, new Date()); + } + + public static final String dateTime(final Date date) + { + return parseDateToStr(YYYY_MM_DD, date); + } + + public static final String parseDateToStr(final String format, final Date date) + { + return new SimpleDateFormat(format).format(date); + } + + public static final Date dateTime(final String format, final String ts) + { + try + { + return new SimpleDateFormat(format).parse(ts); + } + catch (ParseException e) + { + throw new RuntimeException(e); + } + } + + /** + * 日期路径 即年/月/日 如2018/08/08 + */ + public static final String datePath() + { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyy/MM/dd"); + } + + /** + * 日期路径 即年/月/日 如20180808 + */ + public static final String dateTime() + { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyyMMdd"); + } + + /** + * 日期型字符串转化为日期 格式 + */ + public static Date parseDate(Object str) + { + if (str == null) + { + return null; + } + try + { + return parseDate(str.toString(), parsePatterns); + } + catch (ParseException e) + { + return null; + } + } + + /** + * 获取服务器启动时间 + */ + public static Date getServerStartDate() + { + long time = ManagementFactory.getRuntimeMXBean().getStartTime(); + return new Date(time); + } + + /** + * 计算两个时间差 + */ + public static String getDatePoor(Date endDate, Date nowDate) + { + long nd = 1000 * 24 * 60 * 60; + long nh = 1000 * 60 * 60; + long nm = 1000 * 60; + // long ns = 1000; + // 获得两个时间的毫秒时间差异 + long diff = endDate.getTime() - nowDate.getTime(); + // 计算差多少天 + long day = diff / nd; + // 计算差多少小时 + long hour = diff % nd / nh; + // 计算差多少分钟 + long min = diff % nd % nh / nm; + // 计算差多少秒//输出结果 + // long sec = diff % nd % nh % nm / ns; + return day + "天" + hour + "小时" + min + "分钟"; + } + + /** + * 增加 LocalDateTime ==> Date + */ + public static Date toDate(LocalDateTime temporalAccessor) + { + ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); + return Date.from(zdt.toInstant()); + } + + /** + * 增加 LocalDate ==> Date + */ + public static Date toDate(LocalDate temporalAccessor) + { + LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); + ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); + return Date.from(zdt.toInstant()); + } + + public static Date getDayBegin() { + Calendar cal = new GregorianCalendar(); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + return cal.getTime(); + } + + public static Date getDayEnd() { + Calendar cal = new GregorianCalendar(); + cal.set(Calendar.HOUR_OF_DAY, 23); + cal.set(Calendar.MINUTE, 59); + cal.set(Calendar.SECOND, 59); + return cal.getTime(); + } +} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/resources/bootstrap.yml b/ecell-internationalize/ecell-internationalize-system/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..04600a5 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/resources/bootstrap.yml @@ -0,0 +1,24 @@ + # Tomcat +server: + port: 9765 +# Spring +spring: + application: + # 应用名称 + name: ecell-internationalize-system + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 127.0.0.1:8848 + config: + # 配置中心地址 + server-addr: 127.0.0.1:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/resources/com/ecell/internationalize/system/mapper/ChannelMapper.xml b/ecell-internationalize/ecell-internationalize-system/src/main/resources/com/ecell/internationalize/system/mapper/ChannelMapper.xml new file mode 100644 index 0000000..6d3bc05 --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/resources/com/ecell/internationalize/system/mapper/ChannelMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, del_flag, create_user, create_time, update_user, update_time, channel_firm, channel_identify + + + diff --git a/ecell-internationalize/ecell-internationalize-system/src/main/resources/com/ecell/internationalize/system/mapper/CheckVersionMapper.xml b/ecell-internationalize/ecell-internationalize-system/src/main/resources/com/ecell/internationalize/system/mapper/CheckVersionMapper.xml new file mode 100644 index 0000000..7e3adce --- /dev/null +++ b/ecell-internationalize/ecell-internationalize-system/src/main/resources/com/ecell/internationalize/system/mapper/CheckVersionMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, create_user, create_time, update_user, update_time, status, app_package, app_url, apk_name, force_update, version_num, version_explain, remark + + +