diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 8de253a6..13a04d68 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -83,5 +83,7 @@ public interface ErrorCodeConstants { ErrorCode ORDER_NOT_COMPLETE = new ErrorCode(1_004_099_009, "订单未完成"); ErrorCode NEED_ADD_USER = new ErrorCode(1_007_901_004, "请先添加人员"); ErrorCode ADMIN_CARD_NOT_EXISTS = new ErrorCode(1_007_901_005, "管理员卡不存在"); + + ErrorCode APP_UP_NOT_EXISTS = new ErrorCode(1_007_902_001, "app更新不存在"); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/AppUpController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/AppUpController.java new file mode 100644 index 00000000..db174a06 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/AppUpController.java @@ -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 createAppUp(@Valid @RequestBody AppUpSaveReqVO createReqVO) { + return success(appUpService.createAppUp(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新app更新") + //@PreAuthorize("@ss.hasPermission('member:app-up:update')") + public CommonResult 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 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 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> getAppUpPage(@Valid AppUpPageReqVO pageReqVO) { + PageResult 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 list = appUpService.getAppUpPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "app更新.xls", "数据", AppUpRespVO.class, + BeanUtils.toBean(list, AppUpRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpPageReqVO.java new file mode 100644 index 00000000..d1114593 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpPageReqVO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpRespVO.java new file mode 100644 index 00000000..cee104b7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpRespVO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpSaveReqVO.java new file mode 100644 index 00000000..7745b465 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/appup/vo/AppUpSaveReqVO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java index cd3f7c28..1e28dc6d 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java @@ -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.user.MemberUserDO; 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.level.MemberLevelService; import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService; @@ -64,6 +65,8 @@ public class MemberUserController { private MemberGroupService memberGroupService; @Resource private MemberPointRecordService memberPointRecordService; + @Resource + private CardService cardService; @PutMapping("/update") @Operation(summary = "更新会员用户") @@ -104,7 +107,14 @@ public class MemberUserController { @PreAuthorize("@ss.hasPermission('member:user:query')") public CommonResult getUser(@RequestParam("id") Long 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") @@ -115,7 +125,6 @@ public class MemberUserController { if (CollUtil.isEmpty(pageResult.getList())) { return success(PageResult.empty()); } - // 处理用户标签返显 Set tagIds = pageResult.getList().stream() .map(MemberUserDO::getTagIds) @@ -129,7 +138,14 @@ public class MemberUserController { // 处理用户分组返显 List groups = memberGroupService.getGroupList( convertSet(pageResult.getList(), MemberUserDO::getGroupId)); - return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups)); + PageResult 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") @Operation(summary = "获得会员热量分析") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/vo/MemberUserRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/vo/MemberUserRespVO.java index cce2b6e6..fe33f9be 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/vo/MemberUserRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/vo/MemberUserRespVO.java @@ -51,4 +51,9 @@ public class MemberUserRespVO extends MemberUserBaseVO { @Schema(description = "绑定卡号") private String cardId; + + @Schema(description = "绑定卡号") + private String faceId; + + private Byte[] faceData; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/card/vo/FaceVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/card/vo/FaceVo.java new file mode 100644 index 00000000..ddc71416 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/card/vo/FaceVo.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.member.controller.app.card.vo; + +import lombok.Data; +import lombok.ToString; + +/** + * @author zt + * @description + * @since 2024/7/10 + */ +@Data +@ToString +public class FaceVo { + private Long userId; + private String featureValue; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppMemberUserUpdateReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppMemberUserUpdateReqVO.java index 21e74e6e..047cc063 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppMemberUserUpdateReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppMemberUserUpdateReqVO.java @@ -12,7 +12,7 @@ public class AppMemberUserUpdateReqVO { private String nickname; @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/x.png") - @URL(message = "头像必须是 URL 格式") + //@URL(message = "头像必须是 URL 格式") private String avatar; @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/appup/AppUpDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/appup/AppUpDO.java new file mode 100644 index 00000000..6670a552 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/appup/AppUpDO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/appup/AppUpMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/appup/AppUpMapper.java new file mode 100644 index 00000000..8bf37505 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/appup/AppUpMapper.java @@ -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 { + + default PageResult selectPage(AppUpPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .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)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java index a100172f..cb44b7ff 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java @@ -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.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.FaceVo; import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -50,4 +51,6 @@ public interface CardMapper extends BaseMapperX { List selectMoneyList(List list); + + FaceVo getFaceData(String faceId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/appup/AppUpService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/appup/AppUpService.java new file mode 100644 index 00000000..10e5653e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/appup/AppUpService.java @@ -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 getAppUpPage(AppUpPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/appup/AppUpServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/appup/AppUpServiceImpl.java new file mode 100644 index 00000000..162cb2bd --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/appup/AppUpServiceImpl.java @@ -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 getAppUpPage(AppUpPageReqVO pageReqVO) { + return appUpMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java index 747ae92d..9bd93af7 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java @@ -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.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.FaceVo; import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; import javax.validation.Valid; @@ -88,4 +89,6 @@ public interface CardService { AppCardMonthVO getMonthMoney(Long userId,String flag, String time); Boolean rechargeByAdmin(RechargeVO vo); + + FaceVo getFaceData(String faceId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java index f5047920..950b2d19 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java @@ -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.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.FaceVo; 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.group.MemberGroupMapper; 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 com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; @@ -47,9 +47,6 @@ public class CardServiceImpl implements CardService { @Resource private CardMapper cardMapper; - @Resource - private MemberUserService userService; - @Resource private MemberGroupMapper memberGroupMapper; @@ -227,4 +224,9 @@ public class CardServiceImpl implements CardService { //批量添加 return cardMapper.insertBatch(addList); } + + + public FaceVo getFaceData(String faceId){ + return cardMapper.getFaceData(faceId); + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/ConvertBlobTypeHandler.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/ConvertBlobTypeHandler.java new file mode 100644 index 00000000..7ec9f87e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/ConvertBlobTypeHandler.java @@ -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: + * + * + * @author pengyh + * @version 1.0.0 + * @date 2014-07-09 11:15:23 + * + */ +public class ConvertBlobTypeHandler extends BaseTypeHandler { + //###指定字符集 + 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; + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/card/CardMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/card/CardMapper.xml index 7d6786d6..753fc22b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/card/CardMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/card/CardMapper.xml @@ -21,4 +21,13 @@ on uc.user_id = mc.user_id and uc.create_time = mc.create_time + + + + + + + \ No newline at end of file