buyer-api/src/main/java/cn/lili/controller/lmk/StoreMemberController.java
@@ -2,13 +2,26 @@ import cn.lili.base.Result; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.StringUtils; import cn.lili.common.validation.Phone; import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.SearchVO; import cn.lili.group.Add; import cn.lili.group.Update; import cn.lili.modules.lmk.domain.form.StoreMemberForm; import cn.lili.modules.lmk.domain.query.CheckClerkMobileQuery; import cn.lili.modules.lmk.domain.query.StoreMemberQuery; import cn.lili.modules.lmk.service.StoreMemberService; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.StoreDepartment; import cn.lili.modules.member.entity.vo.StoreDepartmentVO; import cn.lili.modules.member.service.ClerkService; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.member.service.StoreDepartmentService; import cn.lili.modules.member.service.StoreRoleService; import cn.lili.mybatis.util.PageUtil; import org.springframework.validation.annotation.Validated; import lombok.RequiredArgsConstructor; import java.util.List; @@ -33,6 +46,23 @@ private final StoreMemberService storeMemberService; private final MemberService memberService; private final StoreRoleService storeRoleService; private final StoreDepartmentService storeDepartmentService; private final ClerkService clerkService; @GetMapping @RequestMapping("/getStoreRoleList") public Result getStoreRoleList(){ return Result.ok().data(storeRoleService.getSelectList()); } @PostMapping("/check") @ApiOperation(value = "检测手机号码有效性") public Result check(@RequestBody CheckClerkMobileQuery checkClerkMobileQuery) { System.out.println(checkClerkMobileQuery); return Result.ok().data(clerkService.checkClerk(checkClerkMobileQuery.getMemberId(),checkClerkMobileQuery.getMobile())); } @PostMapping @ApiOperation(value = "添加", notes = "添加") @@ -44,6 +74,13 @@ @ApiOperation(value = "重置密码", notes = "重置密码") public Result restPassword(@PathVariable String id){ return memberService.resetPassword(id); } @GetMapping("/store/department") @ApiOperation(value = "获取树状结构") public Result getByPage(StoreDepartment entity, SearchVO searchVo) { entity.setStoreId(UserContext.getCurrentUser().getStoreId()); return Result.ok().data(storeDepartmentService.tree(PageUtil.initWrapper(entity, searchVo))); } @PutMapping @@ -70,6 +107,12 @@ return storeMemberService.page(query); } @GetMapping("/checkPermission") @ApiOperation(value = "获得当前用户的店员权限", notes = "获得当前用户的店员权限") public Result checkDelAndUpdatePermission(){ return storeMemberService.checkDelAndUpdatePermission(); } @GetMapping("/{id}") @ApiOperation(value = "详情", notes = "详情") public Result detail(@PathVariable("id") String id) { buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java
@@ -5,9 +5,7 @@ import cn.lili.modules.lmk.domain.form.VideoFootPrintForm; import cn.lili.modules.lmk.domain.form.VideoHomePageInfoForm; import cn.lili.modules.lmk.domain.form.WxVideoForm; import cn.lili.modules.lmk.domain.query.AuthorVideoQuery; import cn.lili.modules.lmk.domain.query.HealthVideoQuery; import cn.lili.modules.lmk.domain.query.WxHealthVideoQuery; import cn.lili.modules.lmk.domain.query.*; import org.springframework.validation.annotation.Validated; import lombok.RequiredArgsConstructor; import java.util.List; @@ -16,7 +14,6 @@ import io.swagger.annotations.ApiOperation; import cn.lili.modules.lmk.service.VideoService; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.query.VideoQuery; import org.springframework.web.bind.annotation.*; /** @@ -80,7 +77,17 @@ public Result healthRecommendVideo(WxHealthVideoQuery query) { return videoService.healthRecommendVideo(query); } @GetMapping("/kitchen/type") @ApiOperation(value = "厨神视频类型列表", notes = "厨神视频类型列表") public Result kitchenTypeList() { return videoService.kitchenTypeList(); } @GetMapping("/kitchen/recommend") @ApiOperation(value = "厨神视频推荐", notes = "厨神视频推荐") public Result kitchenRecommendVideo(WxKitchenVideoQuery query) { return videoService.kitchenRecommendVideo(query); } @GetMapping("/goods/detail/{videoId}") @ApiOperation(value = "视频商品查看", notes = "视频商品查看") public Result getGoodsDetail(@PathVariable("videoId") String videoId) { consumer/src/main/resources/apiclient_cert.p12Binary files differ
consumer/src/main/resources/apiclient_cert.pem
New file @@ -0,0 +1,25 @@ -----BEGIN CERTIFICATE----- MIIEKzCCAxOgAwIBAgIUQI+FRbtTLFAdR9seUI0sqtgzEHcwDQYJKoZIhvcNAQEL BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg Q0EwHhcNMjUwNDAxMDU0NDU0WhcNMzAwMzMxMDU0NDU0WjCBhDETMBEGA1UEAwwK MTcxMjU3NzU5MDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL DCfmt7HlnLPnvo7nm4rnrZDlhpzkuJrnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMpJI0pxouUDKZGtpIytAnLQSZMgltCGEmfuuFaMRN0eqiPJHbo0 EUiRfJNUCBcFsf71iW5bSA2oxyPxh1oljalUDagBWng+3zaXBoFOHrWoswd0B9u1 GdTX/9LEBiLu3MqENckHxI/hx22HuK0vEg2VFroj+5IBIf+KnJoyAkfCH5e8Ea+t FCHlsZa5GqC3iAIB+JTmdSHTRKVfjWHGfGLmhHZt/intLDstlKP8IRbtTR9CRXE3 Q5mVYURGzQ0VOe9zPGZE2CQ5Zd4ETOHwLRJy78nls4Eqn1D1UOZD88uSSi65MM86 msjnH1u3upH1yeTT1Gr4Zvjz8FTjzVAzjL8CAwEAAaOBuTCBtjAJBgNVHRMEAjAA MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2 Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQAf BTOdG7IOxZGUujH83E0RULUcAFy/fIhwM15ZgI7dflCNO3n3Vlx3Q/NuHEKS70hH kdmNCjusIMVDr8vixYwD3rQ6Dw5oi0DNWihLyj99JdqZlcxHSYsmuFXXWAzpvl1q wwAqF1RrrBkoK8T1L3SzZsBRwJcjPZAtQmdaYyZ2wc0RN0LmJQ26Kr+AWTsQ/4NK QC2dlIhRRCQzurBt4Y9s75iDnkckDZx82vJ2pCYAIgcPJRLTQ+06wRnMXajaEicN lXknSrML7I4jM5zOHzuj7RkviFpTdXep1Tk+4E0pN6pXxLyR7uNJ0YuJqnqcdlTY Di0KGtJMK0iUNMKQnFGA -----END CERTIFICATE----- consumer/src/main/resources/apiclient_key.pem
New file @@ -0,0 +1,28 @@ -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDKSSNKcaLlAymR raSMrQJy0EmTIJbQhhJn7rhWjETdHqojyR26NBFIkXyTVAgXBbH+9YluW0gNqMcj 8YdaJY2pVA2oAVp4Pt82lwaBTh61qLMHdAfbtRnU1//SxAYi7tzKhDXJB8SP4cdt h7itLxINlRa6I/uSASH/ipyaMgJHwh+XvBGvrRQh5bGWuRqgt4gCAfiU5nUh00Sl X41hxnxi5oR2bf4p7Sw7LZSj/CEW7U0fQkVxN0OZlWFERs0NFTnvczxmRNgkOWXe BEzh8C0Scu/J5bOBKp9Q9VDmQ/PLkkouuTDPOprI5x9bt7qR9cnk09Rq+Gb48/BU 481QM4y/AgMBAAECggEAdJoeFp5USHA/OPL/4/siay43CvEBHif6WiCX74Ohelhf uIsIcLnssIj0ZzRMCYFF7fJ5CrzhVsZQLB7gZ404EEAcMxi8no2XOy9pF4YBW7Nn p0cx9Gp6/l6X31UROHe5m58EJeItYsbBnxhZ0rJMVLn4xMlTDQFMKLIsvRFQkS2F ZHIFqklDP4kFMmpRlCdoLSTldYmFJ5AtepyXYimGA2dpYooDDhgR1FAudrybQFDh A2h0iZTTmhABnbW3elL6PydjY4yszvM6I15a/eiynevXKVLyVYBHTV39XUOjJp6f XpOW3nuxhkCK2xUfRgOgepxS+3/dauROtM4SQeo56QKBgQDsAoZwYRI0yeTYA0lo m+QAwYGcbTaccKOghc6taIJi4xAOH5WloB6Uv+Wx3gn1DufOJt3yeF4/1+2W1oH6 9ZBZwNo98VqMg2oa4DxhX3Oa6v7VTqelFccGGZ+/Lim5bdMfcfapxlv8MB77OPJW fCAA514hp2ydkkPprFtcPU1z9QKBgQDba1xyHpKmFuz7kju9OWLBq1x8v2GnOqW6 4ypfNob2ljYTK7BfldPupYF7VC4F6dZqqKlyJqe2rhgRWs49J772AHcGovEHaRsT Pi63/EA3ASfi58MmuWI5Y/hFSnM6q14ZTnpD9ZKiInK8HFHjVCrCrfAE1G13/s+R K+YpawTBYwKBgQCoqSlQWF69cObk5HxqkLWBQMiSdI4JgIm+5sELtdswNhq8LSAx q9sO7JCG6ynsgklwTuBgLlsUfwhguk1LfoA5VBPjHn9aWXPTXxpnb+Ja/MM+xyYR WR3RIzDBXIke5fhxyWzAaWxFLlKFsG2nFq98Vdw0asS5WtTDwpPLuFeInQKBgHHG nv4x6jsjgikE7+Mz4YipUeEB4CI14AAjkTIj9SHiTBHuwpsd9vI1cgnAYckBMwTF hm/BqY+pgKNnIbBGbtfi79VKIo+EKdz1joYq0CV1fPhE00W+NTerJe7QJyYR/E5F ClM5AJsAH9x5FuE5IJ8oUGBAwq7JO1p8l/F8I9AfAoGBAMvLmGi36QRzv9VjQO1Z S0yG9OjLqdexYl7ogZYW/ys1yZg9mYiFv1wjqkDhegiGM8QyNoUFq2d7cIFZtfz6 3wrcFn4JDW1l9VaB+IM2G4GEsgrZ4wLalKdCRR83KRvuTyjUKZYVvWNNrNzv0gp/ 51l5UctJTdE2v4+9OTvpo8b2 -----END PRIVATE KEY----- framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreMember.java
@@ -22,14 +22,8 @@ /** 真实姓名 */ private String realName; @TableField("role") /** 角色 */ private String role; @TableField("member_id") /** 会员用户id */ private String memberId; /** 商户id */ @TableField("store_id") private String storeId; } framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreMemberForm.java
@@ -12,6 +12,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * 用户权限管理(商家)表单 * @@ -33,11 +35,15 @@ @ApiModelProperty("密码") private String password; @ApiModelProperty("是否是管理员") private Boolean isSuper; @NotBlank(message = "角色不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("角色Json字符串") private String role; private List<String> role; @ApiModelProperty("部门id") private String departmentId; public static StoreMember getEntityByForm(@NonNull StoreMemberForm form, StoreMember entity) { if(entity == null) { framework/src/main/java/cn/lili/modules/lmk/domain/query/CheckClerkMobileQuery.java
New file @@ -0,0 +1,17 @@ package cn.lili.modules.lmk.domain.query; import io.swagger.annotations.ApiModel; import lombok.Data; /** * 店员电话有效性检测参数 * */ @Data @ApiModel(value = "店员电话有效性检测参数", description = "店员电话有效性检测参数") public class CheckClerkMobileQuery { private String mobile; private String memberId; } framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreMemberQuery.java
@@ -14,9 +14,15 @@ @ApiModel(value = "LmkUserPermissions查询参数", description = "用户权限管理(商家)查询参数") public class StoreMemberQuery extends AbsQuery { /** 真实姓名*/ /** 真实姓名 */ private String realName; /** 店铺id */ private String storeId; /** 电话 */ private String mobile; /** 部门id*/ private String departmentId; } framework/src/main/java/cn/lili/modules/lmk/domain/query/WxKitchenVideoQuery.java
New file @@ -0,0 +1,28 @@ package cn.lili.modules.lmk.domain.query; import cn.lili.base.AbsQuery; import cn.lili.modules.lmk.enums.general.VideoTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 微信小程序大健康查询参数 * * @author wp * @since 2025-05-16 */ @Data @ApiModel(value = "微信小程序大健康查询参数", description = "微信小程序大健康查询参数") public class WxKitchenVideoQuery extends AbsQuery { /** * @see VideoTypeEnum */ @ApiModelProperty("视频类型:视频、大健康、神厨,默认不传查视频") private String videoType = VideoTypeEnum.COOK.getValue(); @ApiModelProperty("厨神视频标签id") private String kitchenTypeId; } framework/src/main/java/cn/lili/modules/lmk/domain/vo/CheckClerkPermissionVO.java
New file @@ -0,0 +1,23 @@ package cn.lili.modules.lmk.domain.vo; import lombok.Data; /** * 店员权限响应对象 */ @Data public class CheckClerkPermissionVO { /** * 店员id */ private String clerkId; /** * 是否是店主 */ private Boolean isShopkeeper; /** * 是否是超级管理员 */ private Boolean isSuper; } framework/src/main/java/cn/lili/modules/lmk/mapper/StoreMemberMapper.java
@@ -3,6 +3,7 @@ import cn.lili.modules.lmk.domain.entity.StoreMember; import cn.lili.modules.lmk.domain.query.StoreMemberQuery; import cn.lili.modules.lmk.domain.vo.StoreMemberVO; import cn.lili.modules.member.entity.dto.ClerkQueryDTO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -30,4 +31,6 @@ */ IPage getPage(IPage page, @Param("query") StoreMemberQuery query); IPage getClerkPage(IPage page, @Param("query") StoreMemberQuery query); } framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java
@@ -48,6 +48,9 @@ IPage recommendHealthVideo(IPage page, @Param("query") WxHealthVideoQuery query); IPage wxKitchenVideoQuery(IPage page, @Param("query") WxKitchenVideoQuery query); /** * 批量更新视频收藏数量 * framework/src/main/java/cn/lili/modules/lmk/service/CustomerService.java
@@ -34,7 +34,7 @@ * @param id 会员id * @return 用户VO */ MemberVO getMember(String id); Result getMember(String id); /** framework/src/main/java/cn/lili/modules/lmk/service/StoreMemberService.java
@@ -5,6 +5,7 @@ import cn.lili.modules.lmk.domain.entity.StoreMember; import cn.lili.modules.lmk.domain.form.StoreMemberForm; import cn.lili.modules.lmk.domain.query.StoreMemberQuery; import cn.lili.modules.member.entity.dto.ClerkQueryDTO; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -64,4 +65,10 @@ * @return */ Result all(); /** * 检查用户权限管理能发删除或修改用户 * @return */ Result checkDelAndUpdatePermission(); } framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java
@@ -126,6 +126,10 @@ Result healthRecommendVideo(WxHealthVideoQuery query); Result kitchenTypeList(); Result kitchenRecommendVideo(WxKitchenVideoQuery query); /** * 批量更新视频收藏数量 * framework/src/main/java/cn/lili/modules/lmk/service/impl/CustomerServiceImpl.java
@@ -11,6 +11,7 @@ import cn.lili.modules.member.entity.vo.MemberVO; import cn.lili.modules.member.mapper.MemberMapper; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.utils.PageUtil; @@ -28,7 +29,7 @@ public class CustomerServiceImpl extends ServiceImpl<MemberMapper, Member> implements CustomerService { private final CustomerMapper customerMapper; private final MemberService memberService; private final LmkStoreMapper storeMapper; @Override @@ -41,7 +42,7 @@ @Override public Result getMemberPageByWX(CustomerQuery customerQuery) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); String storeId = UserContext.getCurrentUser().getStoreId(); if ( storeId == null) { return Result.error("该账号没有注册店铺"); } @@ -51,8 +52,11 @@ @Override public MemberVO getMember(String id) { return null; public Result getMember(String id) { MemberVO memberVO = memberService.getMember(id); //查询用户标签 // memberVO.setCustomerTagList(); return Result.ok().data(memberVO); } @Override framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreMemberServiceImpl.java
@@ -4,18 +4,23 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.modules.lmk.domain.entity.StoreMember; import cn.lili.modules.lmk.domain.form.StoreMemberForm; import cn.lili.modules.lmk.domain.query.StoreMemberQuery; import cn.lili.modules.lmk.domain.vo.CheckClerkPermissionVO; import cn.lili.modules.lmk.domain.vo.StoreMemberVO; import cn.lili.modules.lmk.mapper.StoreMemberMapper; import cn.lili.modules.lmk.service.StoreMemberService; import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dto.ManagerMemberEditDTO; import cn.lili.modules.member.entity.dto.MemberAddDTO; import cn.lili.modules.member.entity.dto.*; import cn.lili.modules.member.entity.vo.ClerkVO; import cn.lili.modules.member.service.ClerkService; import cn.lili.modules.member.service.MemberService; import cn.lili.utils.PageUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -24,6 +29,8 @@ import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -40,6 +47,8 @@ private final StoreMemberMapper storeMemberMapper; private final MemberService memberService; private final ClerkService clerkService; /** * 添加 * @param form @@ -47,29 +56,25 @@ */ @Override public Result add(StoreMemberForm form) { //插入到用户表中 AuthUser currentUser = UserContext.getCurrentUser(); String id = currentUser.getId(); // String storeId = currentUser.getStoreId(); String storeId = "12312323123"; if (id == null || storeId == null) { return Result.error("当前登录账户未绑定商户或用户id获取异常"); String storeId =UserContext.getCurrentUser().getStoreId(); System.out.println(storeId); // storeId = "1376433565247471616"; //测试用 if ( storeId == null){ return null; } //插入会员表 MemberAddDTO addDTO = new MemberAddDTO(); addDTO.setMobile(form.getMobile()); addDTO.setPassword(form.getPassword()); addDTO.setUsername(form.getMobile()); Member member = memberService.addMember(addDTO); ClerkAddDTO clerkAddDTO = new ClerkAddDTO(); clerkAddDTO.setPassword(form.getPassword()); clerkAddDTO.setRoles(form.getRole()); clerkAddDTO.setUsername(form.getMobile()); clerkAddDTO.setMobile(form.getMobile()); clerkAddDTO.setDepartmentId(form.getDepartmentId()); clerkAddDTO.setIsSuper(form.getIsSuper()); Member member = clerkService.addClerkReturnMember(clerkAddDTO); //插入用户权限表 //id插入问题 StoreMember entity = StoreMemberForm.getEntityByForm(form, null); entity.setMemberId(member.getId()); entity.setStoreId(storeId); baseMapper.insert(entity); return Result.ok("添加成功"); } @@ -81,16 +86,27 @@ */ @Override public Result update(StoreMemberForm form) { StoreMember entity = baseMapper.selectById(form.getId()); ClerkEditDTO clerkEditDTO = new ClerkEditDTO(); clerkEditDTO.setId(form.getId()); clerkEditDTO.setRoles(form.getRole()); clerkEditDTO.setDepartmentId(form.getDepartmentId()); clerkEditDTO.setIsSuper(form.getIsSuper()); Clerk clerk = clerkService.updateClerk(clerkEditDTO); StoreMember entity = new LambdaQueryChainWrapper<>(baseMapper) .eq(StoreMember::getMemberId,clerk.getMemberId()) .one(); if (entity == null){ //插入 entity = new StoreMember(); entity.setMemberId(clerk.getMemberId()); entity.setRealName(form.getRealName()); baseMapper.insert(entity); }else { //修改真实姓名 entity.setRealName(form.getRealName()); //TODO 是否需要判断密码新密码 //会员修改密码,电话 memberService.updateMemberPartProperties(entity.getMemberId(),form.getPassword(),form.getMobile()); //修改真实姓名 entity.setRealName(form.getRealName()); entity.setRole(form.getRole()); baseMapper.updateById(entity); baseMapper.updateById(entity); } return Result.ok("修改成功"); } @@ -112,11 +128,15 @@ */ @Override public Result removeById(String id) { StoreMember entity = baseMapper.selectById(id); memberService.removeById(entity.getMemberId()); baseMapper.deleteById(id); //同时删除用户 ClerkVO clerkVO =clerkService.get(id); List<String> ids = new ArrayList<>(); ids.add(id); clerkService.deleteClerk(ids); baseMapper.delete(new LambdaQueryChainWrapper<>(baseMapper) .eq(StoreMember::getMemberId,clerkVO.getMemberId())); //同时删除用户 // 用户角色 return Result.ok("删除成功"); } @@ -128,15 +148,17 @@ */ @Override public Result page(StoreMemberQuery query) { AuthUser currentUser = UserContext.getCurrentUser(); // String storeId = currentUser.getStoreId(); String storeId = "12312323123"; String storeId = UserContext.getCurrentUser().getStoreId(); //TODO 不通过UserContext获得店铺id,通过会员id查询数据库里的商店id // String storeId = "1376433565247471616"; if (storeId == null) { return Result.error("当前登录账户未绑定商户或用户id获取异常"); } IPage<StoreMemberVO> page = PageUtil.getPage(query, StoreMemberVO.class); System.out.println(query.getPageNumber()); IPage<ClerkVO> page = PageUtil.getPage(query, ClerkVO.class); query.setStoreId(storeId); baseMapper.getPage(page, query); baseMapper.getClerkPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -147,11 +169,17 @@ */ @Override public Result detail(String id) { StoreMemberVO vo = baseMapper.getById(id); //密码是否需要解密 ClerkVO clerkVO = clerkService.get(id); StoreMember storeMember = new LambdaQueryChainWrapper<>(baseMapper) .eq(StoreMember::getMemberId, clerkVO.getMemberId()) .one(); if (storeMember != null) { clerkVO.setRealName(storeMember.getRealName()); } Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); //密码是否需要解密 Assert.notNull(clerkVO, "记录不存在"); return Result.ok().data(clerkVO); } /** @@ -166,4 +194,24 @@ .collect(Collectors.toList()); return Result.ok().data(vos); } // 获得当前账号的用户店员信息 public ClerkVO getUserContextClerkInfo(){ String id = UserContext.getCurrentUser().getId(); Clerk clerk = clerkService.getClerkByMemberId(id); if (clerk == null){ throw new RuntimeException("获取店员信息异常"); } return clerkService.get(clerk.getId()); } @Override public Result checkDelAndUpdatePermission() { ClerkVO clerkVO = getUserContextClerkInfo(); CheckClerkPermissionVO permissionVO = new CheckClerkPermissionVO(); permissionVO.setClerkId(clerkVO.getId()); permissionVO.setIsShopkeeper(clerkVO.getShopkeeper()); permissionVO.setIsSuper(clerkVO.getIsSuper()); return Result.ok().data(permissionVO); } } framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
@@ -56,7 +56,7 @@ private final VideoAccountService videoAccountService; private final KitchenVideoTypeRefService kitchenVideoTypeRefService; private final VideoGoodsService videoGoodsService; private final KitchenTypeService kitchenTypeService; /** * 添加 @@ -419,6 +419,25 @@ } @Override public Result kitchenTypeList() { List<KitchenType> list = kitchenTypeService.list(Wrappers.<KitchenType>lambdaQuery().orderByAsc(KitchenType::getSortNum)); return Result.ok().data(list); } @Override public Result kitchenRecommendVideo(WxKitchenVideoQuery query) { IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class); baseMapper.wxKitchenVideoQuery(page, query); page.getRecords().forEach(v -> { if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); } }); return Result.ok().data(page.getRecords()).total(page.getTotal()); } @Override @Transactional(rollbackFor = Exception.class) public void updateCollectNumBatch(List<CollectTypeNumVO> numList) { // 按500条数据进行拆分 framework/src/main/java/cn/lili/modules/member/entity/vo/ClerkVO.java
@@ -36,6 +36,8 @@ @ApiModelProperty(value = "用户拥有的权限") private List<StoreMenu> menus; /** 真实姓名*/ private String realName; public ClerkVO(Clerk clerk) { BeanUtil.copyProperties(clerk, this); framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java
@@ -100,6 +100,12 @@ @ApiModelProperty(value = "客户标签列表") private List<CustomerTagVO> customerTagList; /** * 为null则不在黑名单内 */ @ApiModelProperty(value = "黑名单id") private String blackId; public MemberVO(Member member) { BeanUtil.copyProperties(member, this); } framework/src/main/java/cn/lili/modules/member/service/ClerkService.java
@@ -1,6 +1,8 @@ package cn.lili.modules.member.service; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dto.ClerkAddDTO; @@ -23,6 +25,11 @@ * @date 2021/12/28 7:42 下午 */ public interface ClerkService extends IService<Clerk> { ResultMessage<Object> addClerk(ClerkAddDTO clerkAddDTO); Member addClerkReturnMember(ClerkAddDTO clerkAddDTO); /** * 店员查询 @@ -88,6 +95,14 @@ Member checkClerk(String mobile); /** * 小程序端检测电话号码有效性 * @param memberId * @param mobile * @return */ Member checkClerk(String memberId, String mobile); /** * 店员状态操作 * * @param id 店员id framework/src/main/java/cn/lili/modules/member/service/StoreRoleService.java
@@ -14,6 +14,8 @@ */ public interface StoreRoleService extends IService<StoreRole> { List<StoreRole> getSelectList(); /** * 获取默认角色 * framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java
@@ -1,14 +1,16 @@ package cn.lili.modules.member.serviceimpl; import lombok.extern.slf4j.Slf4j; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.StoreClerkRole; @@ -16,6 +18,7 @@ import cn.lili.modules.member.entity.dto.ClerkAddDTO; import cn.lili.modules.member.entity.dto.ClerkEditDTO; import cn.lili.modules.member.entity.dto.ClerkQueryDTO; import cn.lili.modules.member.entity.dto.MemberAddDTO; import cn.lili.modules.member.entity.vo.ClerkVO; import cn.lili.modules.member.mapper.ClerkMapper; import cn.lili.modules.member.service.*; @@ -43,6 +46,7 @@ */ @Service @Transactional(rollbackFor = Exception.class) @Slf4j public class ClerkServiceImpl extends ServiceImpl<ClerkMapper, Clerk> implements ClerkService { @Autowired @@ -57,7 +61,100 @@ private Cache cache; @Override public ResultMessage<Object> addClerk(ClerkAddDTO clerkAddDTO) { int rolesMaxSize = 10; try { //角色必选,并且最后设置10个 if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() >= rolesMaxSize) { throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN); } //校验是否已经是会员 Member member = memberService.findByMobile(clerkAddDTO.getMobile()); if (member == null) { //添加会员 MemberAddDTO memberAddDTO = new MemberAddDTO(); memberAddDTO.setMobile(clerkAddDTO.getMobile()); memberAddDTO.setPassword(clerkAddDTO.getPassword()); memberAddDTO.setUsername(clerkAddDTO.getUsername()); member = memberService.addMember(memberAddDTO); } else { //校验要添加的会员是否已经是店主 if (Boolean.TRUE.equals(member.getHaveStore())) { throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); } //校验会员的有效性 if (Boolean.FALSE.equals(member.getDisabled())) { throw new ServiceException(ResultCode.USER_STATUS_ERROR); } } //添加店员 clerkAddDTO.setMemberId(member.getId()); clerkAddDTO.setShopkeeper(false); clerkAddDTO.setStoreId(UserContext.getCurrentUser().getStoreId()); this.saveClerk(clerkAddDTO); //修改此会员拥有店铺 List<String> ids = new ArrayList<>(); ids.add(member.getId()); memberService.updateHaveShop(true, UserContext.getCurrentUser().getStoreId(), ids); } catch (ServiceException se) { log.info(se.getMsg(), se); throw se; } catch (Exception e) { log.error("添加店员出错", e); } return ResultUtil.success(); } @Override public Member addClerkReturnMember(ClerkAddDTO clerkAddDTO) { int rolesMaxSize = 10; Member member = null; try { //角色必选,并且最后设置10个 if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() >= rolesMaxSize) { throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN); } //校验是否已经是会员 member = memberService.findByMobile(clerkAddDTO.getMobile()); if (member == null) { //添加会员 MemberAddDTO memberAddDTO = new MemberAddDTO(); memberAddDTO.setMobile(clerkAddDTO.getMobile()); memberAddDTO.setPassword(clerkAddDTO.getPassword()); memberAddDTO.setUsername(clerkAddDTO.getUsername()); member = memberService.addMember(memberAddDTO); } else { //校验要添加的会员是否已经是店主 if (Boolean.TRUE.equals(member.getHaveStore())) { throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); } //校验会员的有效性 if (Boolean.FALSE.equals(member.getDisabled())) { throw new ServiceException(ResultCode.USER_STATUS_ERROR); } } //添加店员 clerkAddDTO.setMemberId(member.getId()); clerkAddDTO.setShopkeeper(false); String storeId = UserContext.getCurrentUser().getStoreId(); // storeId = "1376433565247471616"; //测试用 clerkAddDTO.setStoreId(storeId); this.saveClerk(clerkAddDTO); //修改此会员拥有店铺 List<String> ids = new ArrayList<>(); ids.add(member.getId()); memberService.updateHaveShop(true,storeId, ids); } catch (ServiceException se) { log.info(se.getMsg(), se); throw se; } catch (Exception e) { log.error("添加店员出错", e); } return member; } @Override public IPage<ClerkVO> clerkForPage(PageVO page, ClerkQueryDTO clerkQueryDTO) { QueryWrapper<ClerkVO> clerkVOQueryWrapper = new QueryWrapper<>(); clerkVOQueryWrapper.eq("li_clerk.store_id", UserContext.getCurrentUser().getStoreId()); @@ -159,9 +256,10 @@ if (Boolean.TRUE.equals(clerk.getShopkeeper())) { throw new ServiceException(ResultCode.CANT_EDIT_CLERK_SHOPKEEPER); } String storeId = UserContext.getCurrentUser().getStoreId(); // storeId = "1376433565247471616"; //校验当前店员是否是当前店铺的 if (!clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) { if (!clerk.getStoreId().equals(storeId)) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } if (Boolean.TRUE.equals(clerkEditDTO.getIsSuper())) { @@ -186,8 +284,11 @@ //部门校验 if (CharSequenceUtil.isNotEmpty(clerkEditDTO.getDepartmentId())) { System.out.println(clerkEditDTO.getDepartmentId()); System.out.println(storeDepartmentService.getById(clerkEditDTO.getDepartmentId())); if (storeDepartmentService.getById(clerkEditDTO.getDepartmentId()) != null) { clerk.setDepartmentId(clerkEditDTO.getDepartmentId()); System.out.println(clerk); } else { throw new ServiceException(ResultCode.PERMISSION_NOT_FOUND_ERROR); } @@ -226,6 +327,7 @@ //角色校验 if (clerkAddDTO.getRoles() != null && !clerkAddDTO.getRoles().isEmpty()) { List<StoreRole> storeRoles = storeRoleService.list(clerkAddDTO.getRoles()); System.out.println(storeRoles); if (storeRoles.size() != clerkAddDTO.getRoles().size()) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } @@ -277,7 +379,9 @@ @Override public void deleteClerk(List<String> ids) { QueryWrapper<Clerk> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId()); ; // String storeId = "1376433565247471616"; queryWrapper.eq("store_id", UserContext.getCurrentUser().getId()); queryWrapper.in("id", ids); List<Clerk> clerks = this.baseMapper.selectList(queryWrapper); if (!clerks.isEmpty()) { @@ -291,6 +395,7 @@ List<String> memberIds = new ArrayList<>(); clerks.forEach(clerk -> { //无法删除当前登录的店员 System.out.println(UserContext.getCurrentUser()); if (UserContext.getCurrentUser().getClerkId().equals(clerk.getId())) { throw new ServiceException(ResultCode.CLERK_CURRENT_SUPPER); } @@ -331,6 +436,38 @@ } @Override public Member checkClerk(String memberId, String mobile) { //校验是否已经是会员 Member member = memberService.findByMobile(mobile); System.out.println(member); if (member != null) { // 是当前账号修改 if (memberId !=null && memberId.equals(member.getId())) { return member; } //校验要添加的会员是否已经是店主 if (Boolean.TRUE.equals(member.getHaveStore())) { throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); } //校验会员的有效性 if (Boolean.FALSE.equals(member.getDisabled())) { throw new ServiceException(ResultCode.USER_STATUS_ERROR); } //校验此会员是否已经是店员 Clerk clerk = this.getClerkByMemberId(member.getId()); if (clerk != null && !clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) { throw new ServiceException(ResultCode.CLERK_USER_ERROR); } if (clerk != null && clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) { throw new ServiceException(ResultCode.CLERK_ALREADY_EXIT_ERROR); } return member; } return new Member(); } @Override public void disable(String id, Boolean status) { Clerk clerk = this.getById(id); if (clerk == null) { framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java
@@ -12,6 +12,7 @@ import cn.lili.modules.member.service.StoreDepartmentRoleService; import cn.lili.modules.member.service.StoreMenuRoleService; import cn.lili.modules.member.service.StoreRoleService; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -29,7 +30,21 @@ @Service @Transactional(rollbackFor = Exception.class) public class StoreRoleServiceImpl extends ServiceImpl<StoreRoleMapper, StoreRole> implements StoreRoleService { @Override public List<StoreRole> getSelectList() { String storeId = UserContext.getCurrentUser().getStoreId(); // System.out.println(UserContext.getCurrentUser().getId()); // System.out.println(storeId); // String storeId = "1376433565247471616"; if ( storeId == null) { return null; } StoreRole storeRole = new StoreRole(); storeRole.setStoreId(storeId); return this.list(PageUtil.initWrapper(storeRole)); } /** * 部门角色 */ @@ -109,7 +124,8 @@ @Override public List<StoreRole> list(List<String> ids) { QueryWrapper<StoreRole> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId()); String storeId = UserContext.getCurrentUser().getStoreId(); queryWrapper.eq("store_id", storeId); queryWrapper.in("id", ids); return this.baseMapper.selectList(queryWrapper); } framework/src/main/resources/mapper/lmk/CustomerMapper.xml
@@ -26,6 +26,7 @@ <result property="gradeId" column="grade_id"/> <result property="experience" column="experience"/> <result property="createTime" column="create_time"/> <result property="blackId" column="blackId"/> <collection property="customerTagList" ofType="cn.lili.modules.lmk.domain.vo.CustomerTagVO" select="selectTagByMemberId" column="id" @@ -34,39 +35,36 @@ <select id="getPage" resultMap="BaseResultMap"> SELECT * LM.* FROM li_member lm li_member LM LEFT JOIN lmk_customer_black LMK ON LM.id = LMK.user_id and LMK.delete_flag = 0 <where> <!-- 用户名模糊查询 --> <if test="query.username != null and query.username != ''"> AND lm.username LIKE CONCAT('%', #{query.username}, '%') AND LM.username LIKE CONCAT('%', #{query.username}, '%') </if> <!-- 昵称模糊查询 --> <if test="query.nickName != null and query.nickName != ''"> AND lm.nick_name LIKE CONCAT('%', #{query.nickName}, '%') AND LM.nick_name LIKE CONCAT('%', #{query.nickName}, '%') </if> <!-- 手机号码精确查询 --> <if test="query.mobile != null and query.mobile != ''"> AND lm.mobile = #{query.mobile} AND LM.mobile = #{query.mobile} </if> <!-- 会员状态转 --> <if test="query.disabled != null and query.disabled != ''"> AND lm.disabled = #{query.disabled} AND LM.disabled = #{query.disabled} </if> <!-- 商铺id --> <if test="query.storeId != null and query.storeId != ''"> AND lm.store_id = #{query.storeId} AND LM.store_id = #{query.storeId} </if> AND EXISTS ( SELECT 1 FROM li_order lo WHERE lo.member_id = lm.id ) AND LM.delete_flag = 0 </where> ORDER BY lm.create_time DESC </select> framework/src/main/resources/mapper/lmk/StoreMemberMapper.xml
@@ -24,8 +24,6 @@ SELECT LSM.id, LSM.real_name, LSM.role, LSM.store_id, LSM.member_id, LM.mobile, LM.username @@ -38,24 +36,49 @@ </select> <select id="getPage" resultMap="BaseResultMap"> SELECT LSM.id, LSM.real_name, LSM.role, LSM.store_id, LSM.member_id, LM.mobile, LM.username FROM lmk_store_member LSM LEFT JOIN li_member LM ON LM.id = LSM.member_id LM.id, LSM.real_name, LM.store_id, LM.mobile FROM li_member LM LEFT JOIN li_clerk LC ON LC.member_id = LM.id LEFT JOIN lmk_store_member LSM ON LSM.member_id = LM.id where LSM.delete_flag = 0 AND LM.delete_flag = 0 AND LC.delete_flag = 0 <if test="query.realName != null and query.realName != ''"> AND LSM.real_name LIKE CONCAT('%', #{query.realName}, '%') </if> AND LSM.store_id = #{query.storeId} AND LM.store_id = #{query.storeId} </select> <select id="getClerkPage" resultType="cn.lili.modules.member.entity.vo.ClerkVO"> SELECT LC.*, m.id, m.mobile as mobile, LSM.real_name as realName FROM li_clerk LC Inner JOIN li_member m ON LC.member_id = m.id LEFT JOIN lmk_store_member LSM ON LSM.member_id = m.id <where> LC.store_id = #{query.storeId} <if test="query.departmentId != null and query.departmentId != ''"> AND LC.department_id = #{query.departmentId} </if> <if test="query.realName != null and query.realName != ''"> AND LSM.real_name LIKE CONCAT('%', #{query.realName}, '%') </if> <if test="query.mobile != null and query.mobile != ''"> AND m.mobile LIKE CONCAT('%', #{query.mobile}, '%') </if> </where> </select> </mapper> framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -263,6 +263,41 @@ AND LV.video_content_type = 'video' </select> <select id="wxKitchenVideoQuery" resultMap="WxResultMap"> SELECT LV.author_id, LV.cover_url, LV.video_fit, LV.video_duration, LV.video_file_key, LV.title, LV.goods_view_num, LV.goods_order_num, LV.recommend, LV.status, LV.play_num, LV.comment_num, LV.collect_num, LV.weight, LV.audit_pass_time, LV.update_time, LV.video_content_type, LV.video_type, LV.video_imgs, LV.id, LAU.nick_name AS authorName, LAU.avatar AS authorAvatar FROM lmk_video LV LEFT JOIN li_admin_user LAU ON LV.author_id = LAU.id <if test="query.kitchenTypeId !=null and query.kitchenTypeId !=''"> JOIN (SELECT DISTINCT video_id FROM lmk_kitchen_video_type_ref WHERE kitchen_type_id = #{query.kitchenTypeId}) VT ON VT.video_id = LV.id </if> WHERE LV.delete_flag = 0 AND LV.status = '1' AND LV.video_type = #{query.videoType} AND LV.video_content_type = 'video' </select> <update id="updateCollectNumBatch"> UPDATE lmk_video manager-api/src/main/java/cn/lili/controller/lmk/CustomerController.java
@@ -38,6 +38,11 @@ return customerService.getStoreSelectOptions(); } @ApiOperation(value = "获得客户详情") @GetMapping("/{id}") public Result getCustomerInfo(@PathVariable String id){ return customerService.getMember(id); } @ApiOperation(value = "客户分页列表") @GetMapping manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java
@@ -13,6 +13,7 @@ import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.service.OrderPackageService; import cn.lili.modules.order.order.service.OrderPriceService; import cn.lili.modules.order.order.service.OrderService; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -48,6 +49,9 @@ */ @Autowired private OrderPriceService orderPriceService; @Autowired private OrderPackageService orderPackageService; @ApiOperation(value = "查询订单列表分页") @@ -128,6 +132,10 @@ return ResultUtil.data(orderService.getTraces(orderSn)); } @GetMapping(value = "/getPackage/{orderSn}") public ResultMessage<Object> getPackage(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) { return ResultUtil.data(orderPackageService.getOrderPackageVOList(orderSn)); } @ApiOperation(value = "卖家订单备注") @PutMapping("/{orderSn}/sellerRemark") public ResultMessage<Object> sellerRemark(@PathVariable String orderSn, @RequestParam String sellerRemark) { manager-api/src/main/resources/apiclient_cert.p12Binary files differ
manager-api/src/main/resources/apiclient_cert.pem
New file @@ -0,0 +1,25 @@ -----BEGIN CERTIFICATE----- MIIEKzCCAxOgAwIBAgIUQI+FRbtTLFAdR9seUI0sqtgzEHcwDQYJKoZIhvcNAQEL BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg Q0EwHhcNMjUwNDAxMDU0NDU0WhcNMzAwMzMxMDU0NDU0WjCBhDETMBEGA1UEAwwK MTcxMjU3NzU5MDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL DCfmt7HlnLPnvo7nm4rnrZDlhpzkuJrnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMpJI0pxouUDKZGtpIytAnLQSZMgltCGEmfuuFaMRN0eqiPJHbo0 EUiRfJNUCBcFsf71iW5bSA2oxyPxh1oljalUDagBWng+3zaXBoFOHrWoswd0B9u1 GdTX/9LEBiLu3MqENckHxI/hx22HuK0vEg2VFroj+5IBIf+KnJoyAkfCH5e8Ea+t FCHlsZa5GqC3iAIB+JTmdSHTRKVfjWHGfGLmhHZt/intLDstlKP8IRbtTR9CRXE3 Q5mVYURGzQ0VOe9zPGZE2CQ5Zd4ETOHwLRJy78nls4Eqn1D1UOZD88uSSi65MM86 msjnH1u3upH1yeTT1Gr4Zvjz8FTjzVAzjL8CAwEAAaOBuTCBtjAJBgNVHRMEAjAA MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2 Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQAf BTOdG7IOxZGUujH83E0RULUcAFy/fIhwM15ZgI7dflCNO3n3Vlx3Q/NuHEKS70hH kdmNCjusIMVDr8vixYwD3rQ6Dw5oi0DNWihLyj99JdqZlcxHSYsmuFXXWAzpvl1q wwAqF1RrrBkoK8T1L3SzZsBRwJcjPZAtQmdaYyZ2wc0RN0LmJQ26Kr+AWTsQ/4NK QC2dlIhRRCQzurBt4Y9s75iDnkckDZx82vJ2pCYAIgcPJRLTQ+06wRnMXajaEicN lXknSrML7I4jM5zOHzuj7RkviFpTdXep1Tk+4E0pN6pXxLyR7uNJ0YuJqnqcdlTY Di0KGtJMK0iUNMKQnFGA -----END CERTIFICATE----- manager-api/src/main/resources/apiclient_key.pem
New file @@ -0,0 +1,28 @@ -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDKSSNKcaLlAymR raSMrQJy0EmTIJbQhhJn7rhWjETdHqojyR26NBFIkXyTVAgXBbH+9YluW0gNqMcj 8YdaJY2pVA2oAVp4Pt82lwaBTh61qLMHdAfbtRnU1//SxAYi7tzKhDXJB8SP4cdt h7itLxINlRa6I/uSASH/ipyaMgJHwh+XvBGvrRQh5bGWuRqgt4gCAfiU5nUh00Sl X41hxnxi5oR2bf4p7Sw7LZSj/CEW7U0fQkVxN0OZlWFERs0NFTnvczxmRNgkOWXe BEzh8C0Scu/J5bOBKp9Q9VDmQ/PLkkouuTDPOprI5x9bt7qR9cnk09Rq+Gb48/BU 481QM4y/AgMBAAECggEAdJoeFp5USHA/OPL/4/siay43CvEBHif6WiCX74Ohelhf uIsIcLnssIj0ZzRMCYFF7fJ5CrzhVsZQLB7gZ404EEAcMxi8no2XOy9pF4YBW7Nn p0cx9Gp6/l6X31UROHe5m58EJeItYsbBnxhZ0rJMVLn4xMlTDQFMKLIsvRFQkS2F ZHIFqklDP4kFMmpRlCdoLSTldYmFJ5AtepyXYimGA2dpYooDDhgR1FAudrybQFDh A2h0iZTTmhABnbW3elL6PydjY4yszvM6I15a/eiynevXKVLyVYBHTV39XUOjJp6f XpOW3nuxhkCK2xUfRgOgepxS+3/dauROtM4SQeo56QKBgQDsAoZwYRI0yeTYA0lo m+QAwYGcbTaccKOghc6taIJi4xAOH5WloB6Uv+Wx3gn1DufOJt3yeF4/1+2W1oH6 9ZBZwNo98VqMg2oa4DxhX3Oa6v7VTqelFccGGZ+/Lim5bdMfcfapxlv8MB77OPJW fCAA514hp2ydkkPprFtcPU1z9QKBgQDba1xyHpKmFuz7kju9OWLBq1x8v2GnOqW6 4ypfNob2ljYTK7BfldPupYF7VC4F6dZqqKlyJqe2rhgRWs49J772AHcGovEHaRsT Pi63/EA3ASfi58MmuWI5Y/hFSnM6q14ZTnpD9ZKiInK8HFHjVCrCrfAE1G13/s+R K+YpawTBYwKBgQCoqSlQWF69cObk5HxqkLWBQMiSdI4JgIm+5sELtdswNhq8LSAx q9sO7JCG6ynsgklwTuBgLlsUfwhguk1LfoA5VBPjHn9aWXPTXxpnb+Ja/MM+xyYR WR3RIzDBXIke5fhxyWzAaWxFLlKFsG2nFq98Vdw0asS5WtTDwpPLuFeInQKBgHHG nv4x6jsjgikE7+Mz4YipUeEB4CI14AAjkTIj9SHiTBHuwpsd9vI1cgnAYckBMwTF hm/BqY+pgKNnIbBGbtfi79VKIo+EKdz1joYq0CV1fPhE00W+NTerJe7QJyYR/E5F ClM5AJsAH9x5FuE5IJ8oUGBAwq7JO1p8l/F8I9AfAoGBAMvLmGi36QRzv9VjQO1Z S0yG9OjLqdexYl7ogZYW/ys1yZg9mYiFv1wjqkDhegiGM8QyNoUFq2d7cIFZtfz6 3wrcFn4JDW1l9VaB+IM2G4GEsgrZ4wLalKdCRR83KRvuTyjUKZYVvWNNrNzv0gp/ 51l5UctJTdE2v4+9OTvpo8b2 -----END PRIVATE KEY----- seller-api/src/main/java/cn/lili/controller/permission/ClerkStoreController.java
@@ -80,46 +80,7 @@ @PostMapping @ApiOperation(value = "添加店员") public ResultMessage<Object> add(@Valid ClerkAddDTO clerkAddDTO) { int rolesMaxSize = 10; try { if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() >= rolesMaxSize) { throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN); } //校验是否已经是会员 Member member = memberService.findByMobile(clerkAddDTO.getMobile()); if (member == null) { //添加会员 MemberAddDTO memberAddDTO = new MemberAddDTO(); memberAddDTO.setMobile(clerkAddDTO.getMobile()); memberAddDTO.setPassword(clerkAddDTO.getPassword()); memberAddDTO.setUsername(clerkAddDTO.getUsername()); member = memberService.addMember(memberAddDTO); } else { //校验要添加的会员是否已经是店主 if (Boolean.TRUE.equals(member.getHaveStore())) { throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); } //校验会员的有效性 if (Boolean.FALSE.equals(member.getDisabled())) { throw new ServiceException(ResultCode.USER_STATUS_ERROR); } } //添加店员 clerkAddDTO.setMemberId(member.getId()); clerkAddDTO.setShopkeeper(false); clerkAddDTO.setStoreId(UserContext.getCurrentUser().getStoreId()); clerkService.saveClerk(clerkAddDTO); //修改此会员拥有店铺 List<String> ids = new ArrayList<>(); ids.add(member.getId()); memberService.updateHaveShop(true, UserContext.getCurrentUser().getStoreId(), ids); } catch (ServiceException se) { log.info(se.getMsg(), se); throw se; } catch (Exception e) { log.error("添加店员出错", e); } return ResultUtil.success(); return clerkService.addClerk(clerkAddDTO); } seller-api/src/main/java/cn/lili/controller/permission/StoreRoleController.java
@@ -46,6 +46,8 @@ return ResultUtil.data(page); } @PutMapping("/{roleId}") @ApiOperation(value = "编辑店铺角色") public ResultMessage<StoreRole> edit(@PathVariable String roleId, StoreRole storeRole) { seller-api/src/main/resources/apiclient_cert.p12Binary files differ
seller-api/src/main/resources/apiclient_cert.pem
New file @@ -0,0 +1,25 @@ -----BEGIN CERTIFICATE----- MIIEKzCCAxOgAwIBAgIUQI+FRbtTLFAdR9seUI0sqtgzEHcwDQYJKoZIhvcNAQEL BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg Q0EwHhcNMjUwNDAxMDU0NDU0WhcNMzAwMzMxMDU0NDU0WjCBhDETMBEGA1UEAwwK MTcxMjU3NzU5MDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL DCfmt7HlnLPnvo7nm4rnrZDlhpzkuJrnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMpJI0pxouUDKZGtpIytAnLQSZMgltCGEmfuuFaMRN0eqiPJHbo0 EUiRfJNUCBcFsf71iW5bSA2oxyPxh1oljalUDagBWng+3zaXBoFOHrWoswd0B9u1 GdTX/9LEBiLu3MqENckHxI/hx22HuK0vEg2VFroj+5IBIf+KnJoyAkfCH5e8Ea+t FCHlsZa5GqC3iAIB+JTmdSHTRKVfjWHGfGLmhHZt/intLDstlKP8IRbtTR9CRXE3 Q5mVYURGzQ0VOe9zPGZE2CQ5Zd4ETOHwLRJy78nls4Eqn1D1UOZD88uSSi65MM86 msjnH1u3upH1yeTT1Gr4Zvjz8FTjzVAzjL8CAwEAAaOBuTCBtjAJBgNVHRMEAjAA MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2 Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQAf BTOdG7IOxZGUujH83E0RULUcAFy/fIhwM15ZgI7dflCNO3n3Vlx3Q/NuHEKS70hH kdmNCjusIMVDr8vixYwD3rQ6Dw5oi0DNWihLyj99JdqZlcxHSYsmuFXXWAzpvl1q wwAqF1RrrBkoK8T1L3SzZsBRwJcjPZAtQmdaYyZ2wc0RN0LmJQ26Kr+AWTsQ/4NK QC2dlIhRRCQzurBt4Y9s75iDnkckDZx82vJ2pCYAIgcPJRLTQ+06wRnMXajaEicN lXknSrML7I4jM5zOHzuj7RkviFpTdXep1Tk+4E0pN6pXxLyR7uNJ0YuJqnqcdlTY Di0KGtJMK0iUNMKQnFGA -----END CERTIFICATE----- seller-api/src/main/resources/apiclient_key.pem
New file @@ -0,0 +1,28 @@ -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDKSSNKcaLlAymR raSMrQJy0EmTIJbQhhJn7rhWjETdHqojyR26NBFIkXyTVAgXBbH+9YluW0gNqMcj 8YdaJY2pVA2oAVp4Pt82lwaBTh61qLMHdAfbtRnU1//SxAYi7tzKhDXJB8SP4cdt h7itLxINlRa6I/uSASH/ipyaMgJHwh+XvBGvrRQh5bGWuRqgt4gCAfiU5nUh00Sl X41hxnxi5oR2bf4p7Sw7LZSj/CEW7U0fQkVxN0OZlWFERs0NFTnvczxmRNgkOWXe BEzh8C0Scu/J5bOBKp9Q9VDmQ/PLkkouuTDPOprI5x9bt7qR9cnk09Rq+Gb48/BU 481QM4y/AgMBAAECggEAdJoeFp5USHA/OPL/4/siay43CvEBHif6WiCX74Ohelhf uIsIcLnssIj0ZzRMCYFF7fJ5CrzhVsZQLB7gZ404EEAcMxi8no2XOy9pF4YBW7Nn p0cx9Gp6/l6X31UROHe5m58EJeItYsbBnxhZ0rJMVLn4xMlTDQFMKLIsvRFQkS2F ZHIFqklDP4kFMmpRlCdoLSTldYmFJ5AtepyXYimGA2dpYooDDhgR1FAudrybQFDh A2h0iZTTmhABnbW3elL6PydjY4yszvM6I15a/eiynevXKVLyVYBHTV39XUOjJp6f XpOW3nuxhkCK2xUfRgOgepxS+3/dauROtM4SQeo56QKBgQDsAoZwYRI0yeTYA0lo m+QAwYGcbTaccKOghc6taIJi4xAOH5WloB6Uv+Wx3gn1DufOJt3yeF4/1+2W1oH6 9ZBZwNo98VqMg2oa4DxhX3Oa6v7VTqelFccGGZ+/Lim5bdMfcfapxlv8MB77OPJW fCAA514hp2ydkkPprFtcPU1z9QKBgQDba1xyHpKmFuz7kju9OWLBq1x8v2GnOqW6 4ypfNob2ljYTK7BfldPupYF7VC4F6dZqqKlyJqe2rhgRWs49J772AHcGovEHaRsT Pi63/EA3ASfi58MmuWI5Y/hFSnM6q14ZTnpD9ZKiInK8HFHjVCrCrfAE1G13/s+R K+YpawTBYwKBgQCoqSlQWF69cObk5HxqkLWBQMiSdI4JgIm+5sELtdswNhq8LSAx q9sO7JCG6ynsgklwTuBgLlsUfwhguk1LfoA5VBPjHn9aWXPTXxpnb+Ja/MM+xyYR WR3RIzDBXIke5fhxyWzAaWxFLlKFsG2nFq98Vdw0asS5WtTDwpPLuFeInQKBgHHG nv4x6jsjgikE7+Mz4YipUeEB4CI14AAjkTIj9SHiTBHuwpsd9vI1cgnAYckBMwTF hm/BqY+pgKNnIbBGbtfi79VKIo+EKdz1joYq0CV1fPhE00W+NTerJe7QJyYR/E5F ClM5AJsAH9x5FuE5IJ8oUGBAwq7JO1p8l/F8I9AfAoGBAMvLmGi36QRzv9VjQO1Z S0yG9OjLqdexYl7ogZYW/ys1yZg9mYiFv1wjqkDhegiGM8QyNoUFq2d7cIFZtfz6 3wrcFn4JDW1l9VaB+IM2G4GEsgrZ4wLalKdCRR83KRvuTyjUKZYVvWNNrNzv0gp/ 51l5UctJTdE2v4+9OTvpo8b2 -----END PRIVATE KEY-----