rk
11 小时以前 f9e4883831956328e73f4df77c8d6887a0f8d70b
小程序   接口开发
已添加1个文件
已修改8个文件
128 ■■■■ 文件已修改
server/.gitignore 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopUpdatePwdDTO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_web/src/main/java/com/doumee/api/web/SharesApi.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/.gitignore
@@ -26,4 +26,5 @@
unpackage/ 
mini-program/unpackage/
mini-program/node_modules/
mini-program/mp-weixin/
mini-program/mp-weixin/
/CLAUDE.md
server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopUpdatePwdDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.doumee.dao.web.dto.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("经销商修改密码请求")
public class ShopUpdatePwdDTO {
    @ApiModelProperty("旧密码")
    private String oldPassword;
    @ApiModelProperty("新密码")
    private String newPassword;
}
server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java
@@ -19,6 +19,14 @@
    String createShareImg(Integer userType,Integer memberId,String posterImg) throws Exception;
    String createShopMiniProgramCode(Integer shopId) throws Exception;
    /**
     * ç”Ÿæˆä¼šå‘˜ç«¯å°ç¨‹åºåˆ†äº«ç ï¼ˆçº¯å°ç¨‹åºç ï¼Œæ— æµ·æŠ¥åˆæˆï¼‰
     * @param memberId ä¼šå‘˜ID
     * @return OSS文件路径
     * @throws Exception
     */
    String createMemberMiniProgramCode(Integer memberId) throws Exception;
    /**
     * åˆ›å»º
     *
server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
@@ -218,4 +218,12 @@
    void logOut(String token,Integer shopId);
    /**
     * ç»é”€å•†ä¿®æ”¹å¯†ç 
     * @param shopId å•†æˆ·ID
     * @param oldPassword æ—§å¯†ç 
     * @param newPassword æ–°å¯†ç 
     */
    void updatePwd(Integer shopId, String oldPassword, String newPassword);
}
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -372,17 +372,9 @@
                    .eq(GoodsSku::getIsdeleted,Constants.ZERO)
                    .in(GoodsSku::getGoodsId,idList));
        }
        long shopNum   = shopMapper.selectCount(new QueryWrapper<Shop>().lambda()
                .eq(Shop::getIsdeleted,Constants.ZERO)
                .eq(Shop::getStatus,Constants.ZERO));
        MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Goods.class);
        queryWrapper.select("(select count(s.id) from shop_goods_relation s  " +
                "left join shop g on s.SHOP_ID =g.id " +
                "where g.status=0 and s.ISDELETED=0 and s.GOODS_ID=t.id) as pricedShopNum ");
        queryWrapper.eq(GoodsSku::getIsdeleted,Constants.ZERO);
        queryWrapper.in(Goods::getId,idList);
        List<Goods> goodsList= goodsAdminJoinMapper.selectJoinList(Goods.class,queryWrapper);
        List<Goods> goodsList= goodsMapper.selectList(new QueryWrapper<Goods>().lambda()
                .eq(Goods::getIsdeleted,Constants.ZERO)
                .in(Goods::getId,idList));
        if(goodsList==null || goodsList.size() == 0){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "商品信息查询无效 ");
        }
@@ -409,14 +401,6 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":商品商品尚未设置零售价,无法上架");
                }
            }
            if(Constants.formatLongNum(goods.getPricedShopNum()) < shopNum){
                //默认sku信息
                s =false;
                if(idList.size()==1){
                  throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":有未设置供货价的经销商,无法上架");
                }
            }
            if(s){
                idList2.add(param.getId());
            }
@@ -432,7 +416,7 @@
        if(successNum != idList.size()){
            if( idList.size()>1){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "成功上架商品数:【"+successNum+"】,上架失败:【"+(idList.size()-successNum)+"】个商品,请确保待上架商品的均销售价和供货价已设置");
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "成功上架商品数:【"+successNum+"】,上架失败:【"+(idList.size()-successNum)+"】个商品,请确保待上架商品的销售价已设置");
            }else {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode()," ä¸Šæž¶å¤±è´¥");
            }
server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java
@@ -173,6 +173,30 @@
    }
    @Override
    public String createMemberMiniProgramCode(Integer memberId) throws Exception {
        InputStream inputStream = Constants.generateWxMiniImgStream(
                "uid_"+memberId,
                "/pages/index/index",
                true);
        if (inputStream == null) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "小程序分享码生成失败");
        }
        ALiYunUtil obs = new ALiYunUtil(
                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()
                ,systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode());
        String shareFolder = systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHARES_FILE).getCode();
        String key = DateUtil.getNowShortDate() + "/" + UUID.randomUUID().toString() + ".jpg";
        String fileName = shareFolder + key;
        if (obs.uploadOnlineObject(inputStream,systemDictDataBiz.queryByCode(Constants.OSS, Constants.BUCKETNAME).getCode(), fileName,null)) {
            return key;
        }
        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "小程序分享码上传失败");
    }
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -1000,5 +1000,29 @@
        redisTemplate.delete(token);
    }
    @Override
    public void updatePwd(Integer shopId, String oldPassword, String newPassword){
        if(StringUtils.isBlank(oldPassword) || StringUtils.isBlank(newPassword)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "旧密码和新密码不能为空");
        }
        if(oldPassword.equals(newPassword)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "新密码不能与旧密码相同");
        }
        Shop shop = shopMapper.selectById(shopId);
        if(shop == null){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "商户信息不存在");
        }
        String oldPwd = Utils.Secure.encryptPassword(oldPassword, shop.getSalt());
        if(!oldPwd.equals(shop.getPassword())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "旧密码错误");
        }
        String newSalt = RandomStringUtils.randomAlphabetic(6);
        String newPwd = Utils.Secure.encryptPassword(newPassword, newSalt);
        shopMapper.update(null, new UpdateWrapper<Shop>().lambda()
                .set(Shop::getPassword, newPwd)
                .set(Shop::getSalt, newSalt)
                .eq(Shop::getId, shopId));
    }
}
server/dmmall_web/src/main/java/com/doumee/api/web/SharesApi.java
@@ -59,6 +59,16 @@
        return  ApiResponse.success(inviteRecordService.createShareImg(Constants.ZERO,getMemberId(),null));
    }
    @LoginRequired
    @ApiOperation(value = "生成会员分享码", notes = "小程序端")
    @GetMapping("/getMemberShareCode")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<String> getMemberShareCode() throws Exception {
        return ApiResponse.success(inviteRecordService.createMemberMiniProgramCode(getMemberId()));
    }
    @LoginShopRequired
    @ApiOperation(value = "商户生成邀请海报", notes = "小程序端")
server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java
@@ -183,6 +183,17 @@
        return ApiResponse.success("操作成功");
    }
    @LoginShopRequired
    @ApiOperation("经销商 - ä¿®æ”¹å¯†ç ")
    @PostMapping("/updatePwd")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse updatePwd(@RequestBody ShopUpdatePwdDTO dto) {
        shopService.updatePwd(getShopId(), dto.getOldPassword(), dto.getNewPassword());
        return ApiResponse.success("修改成功");
    }