app
This commit is contained in:
@ -83,5 +83,7 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode ORDER_NOT_COMPLETE = new ErrorCode(1_004_099_009, "订单未完成");
|
ErrorCode ORDER_NOT_COMPLETE = new ErrorCode(1_004_099_009, "订单未完成");
|
||||||
ErrorCode NEED_ADD_USER = new ErrorCode(1_007_901_004, "请先添加人员");
|
ErrorCode NEED_ADD_USER = new ErrorCode(1_007_901_004, "请先添加人员");
|
||||||
ErrorCode ADMIN_CARD_NOT_EXISTS = new ErrorCode(1_007_901_005, "管理员卡不存在");
|
ErrorCode ADMIN_CARD_NOT_EXISTS = new ErrorCode(1_007_901_005, "管理员卡不存在");
|
||||||
|
|
||||||
|
ErrorCode APP_UP_NOT_EXISTS = new ErrorCode(1_007_902_001, "app更新不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,99 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.appup;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.appup.vo.AppUpPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.appup.vo.AppUpRespVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.appup.vo.AppUpSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.appup.AppUpDO;
|
||||||
|
import cn.iocoder.yudao.module.member.service.appup.AppUpService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - app更新")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/member/app-up")
|
||||||
|
@Validated
|
||||||
|
public class AppUpController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AppUpService appUpService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建app更新")
|
||||||
|
//@PreAuthorize("@ss.hasPermission('member:app-up:create')")
|
||||||
|
public CommonResult<Long> createAppUp(@Valid @RequestBody AppUpSaveReqVO createReqVO) {
|
||||||
|
return success(appUpService.createAppUp(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新app更新")
|
||||||
|
//@PreAuthorize("@ss.hasPermission('member:app-up:update')")
|
||||||
|
public CommonResult<Boolean> updateAppUp(@Valid @RequestBody AppUpSaveReqVO updateReqVO) {
|
||||||
|
appUpService.updateAppUp(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除app更新")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
//@PreAuthorize("@ss.hasPermission('member:app-up:delete')")
|
||||||
|
public CommonResult<Boolean> deleteAppUp(@RequestParam("id") Long id) {
|
||||||
|
appUpService.deleteAppUp(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得app更新")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
//@PreAuthorize("@ss.hasPermission('member:app-up:query')")
|
||||||
|
public CommonResult<AppUpRespVO> getAppUp(@RequestParam("id") Long id) {
|
||||||
|
AppUpDO appUp = appUpService.getAppUp(id);
|
||||||
|
return success(BeanUtils.toBean(appUp, AppUpRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得app更新分页")
|
||||||
|
//@PreAuthorize("@ss.hasPermission('member:app-up:query')")
|
||||||
|
public CommonResult<PageResult<AppUpRespVO>> getAppUpPage(@Valid AppUpPageReqVO pageReqVO) {
|
||||||
|
PageResult<AppUpDO> pageResult = appUpService.getAppUpPage(pageReqVO);
|
||||||
|
return success(BeanUtils.toBean(pageResult, AppUpRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出app更新 Excel")
|
||||||
|
//@PreAuthorize("@ss.hasPermission('member:app-up:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportAppUpExcel(@Valid AppUpPageReqVO pageReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||||
|
List<AppUpDO> list = appUpService.getAppUpPage(pageReqVO).getList();
|
||||||
|
// 导出 Excel
|
||||||
|
ExcelUtils.write(response, "app更新.xls", "数据", AppUpRespVO.class,
|
||||||
|
BeanUtils.toBean(list, AppUpRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.appup.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - app更新分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class AppUpPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "版本号")
|
||||||
|
private String version;
|
||||||
|
|
||||||
|
@Schema(description = "更新方式", example = "2")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "老版本号")
|
||||||
|
private String oldVersion;
|
||||||
|
|
||||||
|
@Schema(description = "老版本号")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
@Schema(description = "更新内容")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
@Schema(description = "文件路径", example = "https://www.iocoder.cn")
|
||||||
|
private String fileUrl;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.appup.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.*;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.alibaba.excel.annotation.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - app更新 Response VO")
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
public class AppUpRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12047")
|
||||||
|
@ExcelProperty("编号")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "版本号")
|
||||||
|
@ExcelProperty("版本号")
|
||||||
|
private String version;
|
||||||
|
|
||||||
|
@Schema(description = "更新方式", example = "2")
|
||||||
|
@ExcelProperty("更新方式")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "老版本号")
|
||||||
|
@ExcelProperty("老版本号")
|
||||||
|
private String oldVersion;
|
||||||
|
|
||||||
|
@Schema(description = "老版本号")
|
||||||
|
@ExcelProperty("老版本号")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
@Schema(description = "更新内容")
|
||||||
|
@ExcelProperty("更新内容")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
@Schema(description = "文件路径", example = "https://www.iocoder.cn")
|
||||||
|
@ExcelProperty("文件路径")
|
||||||
|
private String fileUrl;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.appup.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - app更新新增/修改 Request VO")
|
||||||
|
@Data
|
||||||
|
public class AppUpSaveReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12047")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "版本号")
|
||||||
|
private String version;
|
||||||
|
|
||||||
|
@Schema(description = "更新方式", example = "2")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "老版本号")
|
||||||
|
private String oldVersion;
|
||||||
|
|
||||||
|
@Schema(description = "老版本号")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
@Schema(description = "更新内容")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
@Schema(description = "文件路径", example = "https://www.iocoder.cn")
|
||||||
|
private String fileUrl;
|
||||||
|
|
||||||
|
}
|
@ -15,6 +15,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO;
|
|||||||
import cn.iocoder.yudao.module.member.dal.dataobject.tag.MemberTagDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.tag.MemberTagDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.member.service.card.CardService;
|
||||||
import cn.iocoder.yudao.module.member.service.group.MemberGroupService;
|
import cn.iocoder.yudao.module.member.service.group.MemberGroupService;
|
||||||
import cn.iocoder.yudao.module.member.service.level.MemberLevelService;
|
import cn.iocoder.yudao.module.member.service.level.MemberLevelService;
|
||||||
import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService;
|
import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService;
|
||||||
@ -64,6 +65,8 @@ public class MemberUserController {
|
|||||||
private MemberGroupService memberGroupService;
|
private MemberGroupService memberGroupService;
|
||||||
@Resource
|
@Resource
|
||||||
private MemberPointRecordService memberPointRecordService;
|
private MemberPointRecordService memberPointRecordService;
|
||||||
|
@Resource
|
||||||
|
private CardService cardService;
|
||||||
|
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
@Operation(summary = "更新会员用户")
|
@Operation(summary = "更新会员用户")
|
||||||
@ -104,7 +107,14 @@ public class MemberUserController {
|
|||||||
@PreAuthorize("@ss.hasPermission('member:user:query')")
|
@PreAuthorize("@ss.hasPermission('member:user:query')")
|
||||||
public CommonResult<MemberUserRespVO> getUser(@RequestParam("id") Long id) {
|
public CommonResult<MemberUserRespVO> getUser(@RequestParam("id") Long id) {
|
||||||
MemberUserDO user = memberUserService.getUser(id);
|
MemberUserDO user = memberUserService.getUser(id);
|
||||||
return success(MemberUserConvert.INSTANCE.convert03(user));
|
MemberUserRespVO memberUserRespVO = MemberUserConvert.INSTANCE.convert03(user);
|
||||||
|
//if(StringUtils.isNotEmpty(memberUserRespVO.getFaceId())){
|
||||||
|
// FaceVo faceData = cardService.getFaceData(memberUserRespVO.getFaceId());
|
||||||
|
// System.out.println(faceData.toString());
|
||||||
|
// //memberUserRespVO.setFaceData(faceData);
|
||||||
|
//}
|
||||||
|
|
||||||
|
return success(memberUserRespVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
@ -115,7 +125,6 @@ public class MemberUserController {
|
|||||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||||
return success(PageResult.empty());
|
return success(PageResult.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理用户标签返显
|
// 处理用户标签返显
|
||||||
Set<Long> tagIds = pageResult.getList().stream()
|
Set<Long> tagIds = pageResult.getList().stream()
|
||||||
.map(MemberUserDO::getTagIds)
|
.map(MemberUserDO::getTagIds)
|
||||||
@ -129,7 +138,14 @@ public class MemberUserController {
|
|||||||
// 处理用户分组返显
|
// 处理用户分组返显
|
||||||
List<MemberGroupDO> groups = memberGroupService.getGroupList(
|
List<MemberGroupDO> groups = memberGroupService.getGroupList(
|
||||||
convertSet(pageResult.getList(), MemberUserDO::getGroupId));
|
convertSet(pageResult.getList(), MemberUserDO::getGroupId));
|
||||||
return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups));
|
PageResult<MemberUserRespVO> memberUserRespVOPageResult = MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups);
|
||||||
|
//memberUserRespVOPageResult.getList().forEach(vo ->{
|
||||||
|
// if(StringUtils.isNotEmpty(vo.getFaceId())){
|
||||||
|
// Blob faceData = cardService.getFaceData(vo.getFaceId());
|
||||||
|
// vo.setFaceData(faceData);
|
||||||
|
// }
|
||||||
|
//});
|
||||||
|
return success(memberUserRespVOPageResult);
|
||||||
}
|
}
|
||||||
@GetMapping("/heat")
|
@GetMapping("/heat")
|
||||||
@Operation(summary = "获得会员热量分析")
|
@Operation(summary = "获得会员热量分析")
|
||||||
|
@ -51,4 +51,9 @@ public class MemberUserRespVO extends MemberUserBaseVO {
|
|||||||
|
|
||||||
@Schema(description = "绑定卡号")
|
@Schema(description = "绑定卡号")
|
||||||
private String cardId;
|
private String cardId;
|
||||||
|
|
||||||
|
@Schema(description = "绑定卡号")
|
||||||
|
private String faceId;
|
||||||
|
|
||||||
|
private Byte[] faceData;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.app.card.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zt
|
||||||
|
* @description <description class purpose>
|
||||||
|
* @since 2024/7/10
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ToString
|
||||||
|
public class FaceVo {
|
||||||
|
private Long userId;
|
||||||
|
private String featureValue;
|
||||||
|
}
|
@ -12,7 +12,7 @@ public class AppMemberUserUpdateReqVO {
|
|||||||
private String nickname;
|
private String nickname;
|
||||||
|
|
||||||
@Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/x.png")
|
@Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/x.png")
|
||||||
@URL(message = "头像必须是 URL 格式")
|
//@URL(message = "头像必须是 URL 格式")
|
||||||
private String avatar;
|
private String avatar;
|
||||||
|
|
||||||
@Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.dal.dataobject.appup;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* app更新 DO
|
||||||
|
*
|
||||||
|
* @author 管理员
|
||||||
|
*/
|
||||||
|
@TableName("member_app_up")
|
||||||
|
@KeySequence("member_app_up_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AppUpDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 版本号
|
||||||
|
*/
|
||||||
|
private String version;
|
||||||
|
/**
|
||||||
|
* 更新方式
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
/**
|
||||||
|
* 老版本号
|
||||||
|
*/
|
||||||
|
private String oldVersion;
|
||||||
|
/**
|
||||||
|
* 老版本号
|
||||||
|
*/
|
||||||
|
private String remarks;
|
||||||
|
/**
|
||||||
|
* 更新内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
/**
|
||||||
|
* 文件路径
|
||||||
|
*/
|
||||||
|
private String fileUrl;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.dal.mysql.appup;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.appup.AppUpDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.appup.vo.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* app更新 Mapper
|
||||||
|
*
|
||||||
|
* @author 管理员
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface AppUpMapper extends BaseMapperX<AppUpDO> {
|
||||||
|
|
||||||
|
default PageResult<AppUpDO> selectPage(AppUpPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<AppUpDO>()
|
||||||
|
.eqIfPresent(AppUpDO::getVersion, reqVO.getVersion())
|
||||||
|
.eqIfPresent(AppUpDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(AppUpDO::getOldVersion, reqVO.getOldVersion())
|
||||||
|
.eqIfPresent(AppUpDO::getRemarks, reqVO.getRemarks())
|
||||||
|
.eqIfPresent(AppUpDO::getContent, reqVO.getContent())
|
||||||
|
.eqIfPresent(AppUpDO::getFileUrl, reqVO.getFileUrl())
|
||||||
|
.betweenIfPresent(AppUpDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(AppUpDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|||||||
import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.FaceVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@ -50,4 +51,6 @@ public interface CardMapper extends BaseMapperX<CardDO> {
|
|||||||
|
|
||||||
|
|
||||||
List<CardDO> selectMoneyList(List<Long> list);
|
List<CardDO> selectMoneyList(List<Long> list);
|
||||||
|
|
||||||
|
FaceVo getFaceData(String faceId);
|
||||||
}
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.service.appup;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.appup.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.appup.AppUpDO;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* app更新 Service 接口
|
||||||
|
*
|
||||||
|
* @author 管理员
|
||||||
|
*/
|
||||||
|
public interface AppUpService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建app更新
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createAppUp(@Valid AppUpSaveReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新app更新
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateAppUp(@Valid AppUpSaveReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除app更新
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteAppUp(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得app更新
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return app更新
|
||||||
|
*/
|
||||||
|
AppUpDO getAppUp(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得app更新分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return app更新分页
|
||||||
|
*/
|
||||||
|
PageResult<AppUpDO> getAppUpPage(AppUpPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.service.appup;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.appup.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.appup.AppUpDO;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.member.dal.mysql.appup.AppUpMapper;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* app更新 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 管理员
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class AppUpServiceImpl implements AppUpService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AppUpMapper appUpMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createAppUp(AppUpSaveReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
AppUpDO appUp = BeanUtils.toBean(createReqVO, AppUpDO.class);
|
||||||
|
appUpMapper.insert(appUp);
|
||||||
|
// 返回
|
||||||
|
return appUp.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateAppUp(AppUpSaveReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateAppUpExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
AppUpDO updateObj = BeanUtils.toBean(updateReqVO, AppUpDO.class);
|
||||||
|
appUpMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAppUp(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validateAppUpExists(id);
|
||||||
|
// 删除
|
||||||
|
appUpMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateAppUpExists(Long id) {
|
||||||
|
if (appUpMapper.selectById(id) == null) {
|
||||||
|
throw exception(APP_UP_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AppUpDO getAppUp(Long id) {
|
||||||
|
return appUpMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<AppUpDO> getAppUpPage(AppUpPageReqVO pageReqVO) {
|
||||||
|
return appUpMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO;
|
|||||||
import cn.iocoder.yudao.module.member.controller.admin.card.vo.RechargeVO;
|
import cn.iocoder.yudao.module.member.controller.admin.card.vo.RechargeVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.FaceVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@ -88,4 +89,6 @@ public interface CardService {
|
|||||||
AppCardMonthVO getMonthMoney(Long userId,String flag, String time);
|
AppCardMonthVO getMonthMoney(Long userId,String flag, String time);
|
||||||
|
|
||||||
Boolean rechargeByAdmin(RechargeVO vo);
|
Boolean rechargeByAdmin(RechargeVO vo);
|
||||||
|
|
||||||
|
FaceVo getFaceData(String faceId);
|
||||||
}
|
}
|
@ -11,11 +11,11 @@ import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO;
|
|||||||
import cn.iocoder.yudao.module.member.controller.admin.card.vo.RechargeVO;
|
import cn.iocoder.yudao.module.member.controller.admin.card.vo.RechargeVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.card.vo.FaceVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.group.MemberGroupMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.group.MemberGroupMapper;
|
||||||
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
|
||||||
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -47,9 +47,6 @@ public class CardServiceImpl implements CardService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CardMapper cardMapper;
|
private CardMapper cardMapper;
|
||||||
@Resource
|
|
||||||
private MemberUserService userService;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MemberGroupMapper memberGroupMapper;
|
private MemberGroupMapper memberGroupMapper;
|
||||||
|
|
||||||
@ -227,4 +224,9 @@ public class CardServiceImpl implements CardService {
|
|||||||
//批量添加
|
//批量添加
|
||||||
return cardMapper.insertBatch(addList);
|
return cardMapper.insertBatch(addList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public FaceVo getFaceData(String faceId){
|
||||||
|
return cardMapper.getFaceData(faceId);
|
||||||
|
}
|
||||||
}
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.service.card;
|
||||||
|
|
||||||
|
import org.apache.ibatis.type.BaseTypeHandler;
|
||||||
|
import org.apache.ibatis.type.JdbcType;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.sql.Blob;
|
||||||
|
import java.sql.CallableStatement;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* className:ConvertBlobTypeHandler
|
||||||
|
*
|
||||||
|
* 自定义typehandler,解决mybatis存储blob字段后,出现乱码的问题
|
||||||
|
* 配置mapper.xml:
|
||||||
|
* <result typeHandler="cn.ffcs.drive.common.util.ConvertBlobTypeHandler"/>
|
||||||
|
*
|
||||||
|
* @author pengyh
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 2014-07-09 11:15:23
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ConvertBlobTypeHandler extends BaseTypeHandler<String> {
|
||||||
|
//###指定字符集
|
||||||
|
private static final String DEFAULT_CHARSET = "utf-8";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setNonNullParameter(PreparedStatement ps, int i,
|
||||||
|
String parameter, JdbcType jdbcType) throws SQLException {
|
||||||
|
ByteArrayInputStream bis;
|
||||||
|
try {
|
||||||
|
//###把String转化成byte流
|
||||||
|
bis = new ByteArrayInputStream(parameter.getBytes(DEFAULT_CHARSET));
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
throw new RuntimeException("Blob Encoding Error!");
|
||||||
|
}
|
||||||
|
ps.setBinaryStream(i, bis, parameter.length());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNullableResult(ResultSet rs, String columnName)
|
||||||
|
throws SQLException {
|
||||||
|
Blob blob = rs.getBlob(columnName);
|
||||||
|
byte[] returnValue = null;
|
||||||
|
if (null != blob) {
|
||||||
|
returnValue = blob.getBytes(1, (int) blob.length());
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
//###把byte转化成string
|
||||||
|
return new String(returnValue, DEFAULT_CHARSET);
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
throw new RuntimeException("Blob Encoding Error!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNullableResult(CallableStatement cs, int columnIndex)
|
||||||
|
throws SQLException {
|
||||||
|
Blob blob = cs.getBlob(columnIndex);
|
||||||
|
byte[] returnValue = null;
|
||||||
|
if (null != blob) {
|
||||||
|
returnValue = blob.getBytes(1, (int) blob.length());
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return new String(returnValue, DEFAULT_CHARSET);
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
throw new RuntimeException("Blob Encoding Error!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNullableResult(ResultSet arg0, int arg1)
|
||||||
|
throws SQLException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -21,4 +21,13 @@
|
|||||||
on uc.user_id = mc.user_id and uc.create_time = mc.create_time
|
on uc.user_id = mc.user_id and uc.create_time = mc.create_time
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<resultMap type="cn.iocoder.yudao.module.member.controller.app.card.vo.FaceVo" id="face">
|
||||||
|
<id column="user_id" property="userId"/>
|
||||||
|
<result column="feature_value" property="featureValue" typeHandler="cn.iocoder.yudao.module.member.service.card.ConvertBlobTypeHandler"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="getFaceData" resultMap="face">
|
||||||
|
select * from user_face where user_id = #{faceId};
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
Reference in New Issue
Block a user