puzhibing
2025-01-02 210828d1a6947596fe00ab30fcd8725c6714dde4
修改bug
17个文件已修改
5个文件已添加
552 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserShopClientFallbackFactory.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserShopClient.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserClickLog.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/UserShopClientFallbackFactory.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/UserShopClient.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserShopController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserClickLogController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserClickLogMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserShopClientFallbackFactory.java
New file
@@ -0,0 +1,30 @@
package com.ruoyi.account.api.factory;
import com.ruoyi.account.api.feignClient.AppUserShopClient;
import com.ruoyi.account.api.model.AppUserShop;
import com.ruoyi.common.core.domain.R;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.List;
/**
 * @author zhibing.pu
 * @date 2025/1/2 18:50
 */
public class AppUserShopClientFallbackFactory  implements FallbackFactory<AppUserShopClient> {
    @Override
    public AppUserShopClient create(Throwable cause) {
        return new AppUserShopClient(){
            @Override
            public R<List<AppUserShop>> getAppUserShop(Long userId) {
                return R.fail("查询用户门店关系数据失败:" + cause.getMessage());
            }
            @Override
            public R delAppUserShop(AppUserShop appUserShop) {
                return R.fail("删除用户门店关系数据失败:" + cause.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserShopClient.java
New file
@@ -0,0 +1,36 @@
package com.ruoyi.account.api.feignClient;
import com.ruoyi.account.api.factory.AppUserShopClientFallbackFactory;
import com.ruoyi.account.api.model.AppUserShop;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
 * @author zhibing.pu
 * @date 2025/1/2 18:49
 */
@FeignClient(contextId = "AppUserShopClient", value = ServiceNameConstants.ACCOUNT_SERVICE, fallbackFactory = AppUserShopClientFallbackFactory.class)
public interface AppUserShopClient {
    /**
     * 查询用户门店关系数据
     * @param userId
     * @return
     */
    @GetMapping("/appUserShop/shop/{userId}")
    R<List<AppUserShop>> getAppUserShop(@PathVariable("userId") Long userId);
    /**
     * 删除用户门店关系数据
     */
    @PostMapping("/appUserShop/delAppUserShop")
    R delAppUserShop(@RequestBody AppUserShop appUserShop);
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserClickLog.java
@@ -40,6 +40,9 @@
    @TableField("create_time")
    private LocalDateTime createTime;
    @TableField(exist = false)
    private String createTimeStr;
    @ApiModelProperty(value = "用户id")
    @TableField("app_user_id")
    private Long appUserId;
ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -4,3 +4,4 @@
com.ruoyi.account.api.factory.UserPointFallbackFactory
com.ruoyi.account.api.factory.BalanceChangeRecordClientFallbackFactory
com.ruoyi.account.api.factory.UserChangeLogFallbackFactory
com.ruoyi.account.api.factory.AppUserShopClientFallbackFactory
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java
@@ -78,6 +78,11 @@
            public R saveShopUser(SysUser user) {
                return R.fail("新增加门店员工账号数据失败:" + cause.getMessage());
            }
            @Override
            public R delShopUser(Integer objectId, Integer roleType) {
                return R.fail("删除门店管理员账号失败:" + cause.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/UserShopClientFallbackFactory.java
New file
@@ -0,0 +1,29 @@
package com.ruoyi.system.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.feignClient.UserShopClient;
import com.ruoyi.system.api.model.UserShop;
import java.util.List;
/**
 * @author zhibing.pu
 * @date 2025/1/2 18:02
 */
public class UserShopClientFallbackFactory  implements org.springframework.cloud.openfeign.FallbackFactory<UserShopClient> {
    @Override
    public UserShopClient create(Throwable cause) {
        return new UserShopClient(){
            @Override
            public R<List<UserShop>> getUserShop(UserShop userShop) {
                return R.fail("获取用户门店关系数据失败:" + cause.getMessage());
            }
            @Override
            public R saveUserShop(UserShop userShop) {
                return R.fail("保存门店用户关系数据失败:" + cause.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java
@@ -96,6 +96,16 @@
     * @return
     */
    @PostMapping("/user/saveShopUser")
    R saveShopUser(@RequestBody SysUser user);
    R<Long> saveShopUser(@RequestBody SysUser user);
    /**
     * 删除门店所有管理员账号
     * @param objectId
     * @param roleType
     * @return
     */
    @PostMapping("/user/delShopUser")
    R delShopUser(@RequestParam("objectId") Integer objectId, @RequestParam("roleType") Integer roleType);
    
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/UserShopClient.java
New file
@@ -0,0 +1,37 @@
package com.ruoyi.system.api.feignClient;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.factory.UserShopClientFallbackFactory;
import com.ruoyi.system.api.model.UserShop;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
 * @author zhibing.pu
 * @date 2025/1/2 18:02
 */
@FeignClient(contextId = "UserShopClient", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = UserShopClientFallbackFactory.class)
public interface UserShopClient {
    /**
     * 获取用户门店关系数据
     * @param userShop
     * @return
     */
    @PostMapping("/userShop/getUserShop")
    R<List<UserShop>> getUserShop(@RequestBody UserShop userShop);
    /**
     * 保存门店用户关系数据
     * @param userShop
     * @return
     */
    @PostMapping("/userShop/saveUserShop")
    R saveUserShop(@RequestBody UserShop userShop);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java
@@ -22,10 +22,15 @@
     * 用户id
     */
    @TableField("user_id")
    private Integer userId;
    private Long userId;
    /**
     * 门店id
     */
    @TableField("shop_id")
    private Integer shopId;
    /**
     * 角色类型(1=店长,2=店员)
     */
    @TableField("role_type")
    private Integer roleType;
}
ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -5,3 +5,4 @@
com.ruoyi.system.api.factory.SysRoleFallbackFactory
com.ruoyi.system.api.factory.SysLoginLogFallbackFactory
com.ruoyi.system.api.factory.SysUserRoleFallbackFactory
com.ruoyi.system.api.factory.UserShopClientFallbackFactory
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
@@ -548,8 +549,7 @@
     */
    @ResponseBody
    @PostMapping("/saveShopUser")
    public R saveShopUser(@RequestBody SysUser user){
        Integer shopId = user.getObjectId();
    public R<Long> saveShopUser(@RequestBody SysUser user){
        SysUser one = userService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, user.getPhonenumber()).eq(SysUser::getDelFlag, "0")
                .eq(SysUser::getStatus, "0").eq(SysUser::getRoleType, 2).eq(SysUser::getAppUserId, user.getAppUserId()));
        if(null == one){
@@ -560,16 +560,29 @@
            userRole.setUserId(user.getUserId());
            userRole.setRoleId(2L);
            userRoleService.save(userRole);
        }else{
            user = one;
        }
        //添加门店关系数据
        UserShop userShop = userShopService.getOne(new LambdaQueryWrapper<UserShop>().eq(UserShop::getShopId, shopId).eq(UserShop::getUserId, user.getAppUserId()));
        if(null == userShop){
            userShop = new UserShop();
            userShop.setUserId(user.getUserId().intValue());
            userShop.setShopId(user.getObjectId());
            userShopService.save(userShop);
        return R.ok(user.getUserId());
    }
    /**
     * 删除门店管理员账号
     * @param objectId
     * @param roleType
     * @return
     */
    @PostMapping("/user/delShopUser")
    public R delShopUser(@RequestParam("objectId") Integer objectId, @RequestParam("roleType") Integer roleType){
        List<SysUser> list = userService.list(new LambdaUpdateWrapper<SysUser>().eq(SysUser::getObjectId, objectId).eq(SysUser::getRoleType, roleType)
                .eq(SysUser::getDelFlag, "0").eq(SysUser::getStatus, "0"));
        for (SysUser sysUser : list) {
            List<UserShop> list1 = userShopService.list(new LambdaUpdateWrapper<UserShop>().eq(UserShop::getUserId, sysUser.getUserId()));
            List<Integer> collect = list1.stream().map(UserShop::getShopId).collect(Collectors.toList());
            if(collect.contains(objectId) && collect.size() == 1){
                sysUser.setDelFlag("2");
                userService.updateById(sysUser);
            }
            userShopService.remove(new LambdaUpdateWrapper<UserShop>().eq(UserShop::getUserId, sysUser.getUserId()).eq(UserShop::getShopId, objectId));
        }
        return R.ok();
    }
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserShopController.java
New file
@@ -0,0 +1,59 @@
package com.ruoyi.system.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.model.UserShop;
import com.ruoyi.system.service.UserShopService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author zhibing.pu
 * @date 2025/1/2 18:04
 */
@RestController
@RequestMapping("/userShop")
public class UserShopController {
    @Resource
    private UserShopService userShopService;
    /**
     * 获取用户门店关系数据
     * @param userShop
     * @return
     */
    @PostMapping("/getUserShop")
    public R<List<UserShop>> getUserShop(@RequestBody UserShop userShop){
        LambdaUpdateWrapper<UserShop> wrapper = new LambdaUpdateWrapper<UserShop>();
        if(null != userShop.getUserId()){
            wrapper.eq(UserShop::getUserId, userShop.getUserId());
        }
        if(null != userShop.getShopId()){
            wrapper.eq(UserShop::getShopId, userShop.getShopId());
        }
        if(null != userShop.getRoleType()){
            wrapper.eq(UserShop::getRoleType, userShop.getRoleType());
        }
        List<UserShop> list = userShopService.list(wrapper);
        return R.ok(list);
    }
    /**
     * 保存数据
     * @param userShop
     * @return
     */
    @PostMapping("/saveUserShop")
    public R saveUserShop(@RequestBody UserShop userShop){
        userShopService.save(userShop);
        return R.ok();
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java
@@ -1,6 +1,7 @@
package com.ruoyi.account.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.account.api.model.AppUserShop;
import com.ruoyi.account.service.AppUserShopService;
import com.ruoyi.common.core.domain.R;
@@ -22,7 +23,11 @@
    @PostMapping("/addAppUserShop")
    public R<Void> add(@RequestBody AppUserShop appUserShop) {
        long count = appUserShopService.count(new LambdaQueryWrapper<AppUserShop>()
                .eq(AppUserShop::getAppUserId, appUserShop.getAppUserId()).eq(AppUserShop::getShopId, appUserShop.getShopId()));
        if(0 == count){
        appUserShopService.save(appUserShop);
        }
        return R.ok();
    }
@@ -34,5 +39,22 @@
    }
    
    /**
     * 删除门店用户关系数据
     * @param appUserShop
     * @return
     */
    @PostMapping("/delAppUserShop")
    public R delAppUserShop(@RequestBody AppUserShop appUserShop){
        LambdaUpdateWrapper<AppUserShop> wrapper = new LambdaUpdateWrapper<>();
        if(null != appUserShop.getAppUserId()){
            wrapper.eq(AppUserShop::getAppUserId, appUserShop.getAppUserId());
        }
        if(null != appUserShop.getShopId()){
            wrapper.eq(AppUserShop::getShopId, appUserShop.getShopId());
        }
        appUserShopService.remove(wrapper);
        return R.ok();
    }
    
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserClickLogController.java
@@ -26,12 +26,17 @@
@RestController
@RequestMapping("/user-click-log")
public class UserClickLogController {
    @Resource
    private UserClickLogService userClickLogService;
    @PostMapping("/page")
    @ApiOperation(value = "申请点击列表", tags = {"后台"})
    public R<IPage<UserClickLog>> page(@RequestBody UserCancelQuery agentQuery) {
        return R.ok(userClickLogService.pageList(agentQuery));
    }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -1,6 +1,7 @@
package com.ruoyi.account.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.UserCoupon;
@@ -30,6 +31,7 @@
import io.swagger.annotations.ApiParam;
import java.time.LocalDateTime;
import java.util.stream.Collectors;
/**
 * <p>
@@ -206,5 +208,47 @@
    public R<Long> getCouponCount(@RequestParam Integer couponId){
        return R.ok(userCouponService.lambdaQuery().eq(UserCoupon::getCouponId, couponId).count());
    }
    @ResponseBody
    @GetMapping("/getCouponInfoInfo")
    @ApiOperation(value = "获取核销商品券详情", tags = {"小程序-个人中心-门店管理"})
    public R<UserCoupon> getCouponInfoInfo(String id){
        UserCoupon userCoupon = userCouponService.getById(id);
        CouponInfo couponInfo = couponClient.detail(userCoupon.getCouponId()).getData();
        List<Goods> goods = null;
        if("-1".equals(couponInfo.getForGoodIds())){
            goods = goodsClient.getGoodsByType(2).getData();
        }else{
            goods = goodsClient.getGoodsById(couponInfo.getForGoodIds().split(",")).getData();
        }
        CouponInfoVo couponInfoVo = new CouponInfoVo();
        BeanUtils.copyProperties(couponInfo, couponInfoVo);
        couponInfoVo.setGoodNames(goods.stream().map(Goods::getName).collect(Collectors.toList()));
        userCoupon.setCouponInfoVo(couponInfoVo);
        return R.ok(userCoupon);
    }
    @ResponseBody
    @PutMapping("/useCoupon/{id}")
    @ApiOperation(value = "核销商品优惠券", tags = {"小程序-个人中心-门店管理"})
    public R useCoupon(@PathVariable("id") String id){
        UserCoupon userCoupon = userCouponService.getById(id);
        if(null == userCoupon){
            return R.ok("核销码错误");
        }
        if(userCoupon.getStatus() == 2){
            return R.ok("优惠券已使用");
        }
        if(userCoupon.getStatus() == 3){
            return R.ok("优惠券已过期");
        }
        userCoupon.setStatus(2);
        userCoupon.setUseTime(LocalDateTime.now());
        userCouponService.updateById(userCoupon);
        return R.ok();
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java
@@ -2,6 +2,10 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.UserClickLog;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.UserClickLogService;
import com.ruoyi.account.service.VipCenterService;
import com.ruoyi.account.service.VipSettingService;
import com.ruoyi.account.vo.vip.Level;
@@ -19,6 +23,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -46,6 +51,10 @@
    private VipGoodClient vipGoodClient;
    @Resource
    private GoodsClient goodsClient;
    @Resource
    private AppUserService appUserService;
    @Resource
    private UserClickLogService userClickLogService;
    @GetMapping("getVipLevelList")
@@ -106,6 +115,16 @@
            vipLevel.setLevelList(levelList);
            vipLevel.setCurrentLevel(loginUserVipSetting.getId());
            //添加操作记录
            AppUser appUser = appUserService.getById(userid);
            UserClickLog userClickLog = new UserClickLog();
            userClickLog.setDelFlag(0);
            userClickLog.setCreateTime(LocalDateTime.now());
            userClickLog.setAppUserId(userid);
            userClickLog.setVipId(appUser.getVipId());
            userClickLogService.save(userClickLog);
            return R.ok(vipLevel);
        } catch (Exception e) {
            log.error("会员等级获取失败", e);
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -428,32 +428,6 @@
            weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + appUser.getId(), EnvVersion.TRIAL, filePath + fileName);
            appUser.setQrCode(accessPath + fileName);
            this.updateById(appUser);
            //查询当前注册的手机号是都和门店管理员手机号相同
            Shop shop = shopClient.getShopByPhone(registerAccount.getPhone()).getData();
            if(null != shop){
                //添加门店用户关系数据
                AppUserShop appUserShop = appUserShopService.getOne(new LambdaQueryWrapper<AppUserShop>().eq(AppUserShop::getAppUserId, appUser.getId()).eq(AppUserShop::getShopId, shop.getId()));
                if(null == appUserShop){
                    appUserShop = new AppUserShop();
                    appUserShop.setShopId(shop.getId());
                    appUserShop.setAppUserId(appUser.getId());
                    appUserShopService.save(appUserShop);
                    //添加管理后台账号
                    SysUser user = new SysUser();
                    user.setDeptId(1L);
                    user.setUserName(appUser.getName());
                    user.setNickName(appUser.getName());
                    user.setPhonenumber(appUser.getPhone());
                    user.setAvatar(appUser.getAvatar());
                    user.setStatus("0");
                    user.setDelFlag("0");
                    user.setRoleType(2);
                    user.setObjectId(shop.getId());
                    user.setAppUserId(appUser.getId());
                    sysUserClient.saveShopUser(user);
                }
            }
        }
        LoginVo loginVo = new LoginVo();
        loginVo.setSkipPage(1);
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserClickLogMapper.xml
@@ -16,7 +16,11 @@
        id, del_flag, create_time, app_user_id, vip_id
    </sql>
    <select id="pageList" resultType="com.ruoyi.account.api.model.UserClickLog">
            select  t1.* ,t2.phone as userPhone,t2.name as userName
            select
            t1.* ,
            t2.phone as userPhone,
            t2.name as userName,
            DATE_FORMAT(t1.create_time, '%Y-%m-%d %H:%i:%s') as createTimeStr
            from t_user_click_log t1
            left join t_app_user t2 on t1.app_user_id = t2.id
            <where>
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -366,7 +366,7 @@
            confirmOrderVo.setDiscountAmount(orderMoney.subtract(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
        }
        BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData();
        confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1"));
        confirmOrderVo.setUseSimultaneously(JSON.parseObject(baseSetting.getContent()).getInteger("status") == 1);
        int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
        confirmOrderVo.setEarnPoint(earnPoint);
        //支付金额,订单金额-订单优惠
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.feignClient.AppUserClient;
@@ -203,5 +204,11 @@
        return null;
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.feignClient.AppUserShopClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.AppUserShop;
import com.ruoyi.common.core.domain.R;
@@ -20,7 +21,9 @@
import com.ruoyi.other.vo.ShopStatistics;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.feignClient.UserShopClient;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.api.model.UserShop;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -32,6 +35,7 @@
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -60,6 +64,10 @@
    private SysUserClient sysUserClient;
    @Resource
    private ShopMapper shopMapper;
    @Resource
    private UserShopClient userShopClient;
    @Resource
    private AppUserShopClient appUserShopClient;
@@ -89,7 +97,6 @@
        shop.setAppUserId(appUser.getId());
        shopService.save(shop);
        AppUserShop appUserShop = new AppUserShop();
        appUserShop.setAppUserId(appUser.getId());
        appUserShop.setShopId(shop.getId());
@@ -101,6 +108,44 @@
        R<Void> editAppUserR = appUserClient.editAppUserById(appUser);
        if (R.isError(editAppUserR)){
            throw new RuntimeException("添加失败");
        }
        //添加门店后台账号和门店关系数据
        SysUser sysUser = sysUserClient.queryUserByUserName(phone).getData();
        if(null != sysUser){
            UserShop userShop = new UserShop();
            userShop.setUserId(sysUser.getUserId());
            userShop.setShopId(shop.getId());
            userShop.setRoleType(1);
            List<UserShop> data = userShopClient.getUserShop(userShop).getData();
            if(null == data || data.size() == 0){
                userShop = new UserShop();
                userShop.setUserId(sysUser.getUserId());
                userShop.setShopId(shop.getId());
                userShop.setRoleType(1);
                userShopClient.saveUserShop(userShop);
            }
        }else{
            //添加管理后台账号
            SysUser user = new SysUser();
            user.setDeptId(1L);
            user.setUserName(appUser.getPhone());
            user.setNickName(appUser.getName());
            user.setPhonenumber(appUser.getPhone());
            user.setAvatar(appUser.getAvatar());
            user.setStatus("0");
            user.setDelFlag("0");
            user.setRoleType(2);
            user.setObjectId(shop.getId());
            user.setAppUserId(appUser.getId());
            user.setPassword(phone.substring(5));
            user.setCreateTime(new Date());
            Long userId = sysUserClient.saveShopUser(user).getData();
            UserShop userShop = new UserShop();
            userShop.setUserId(userId);
            userShop.setShopId(shop.getId());
            userShop.setRoleType(1);
            userShopClient.saveUserShop(userShop);
        }
        return R.ok();
    }
@@ -119,6 +164,27 @@
        Shop shop = shopService.getById(id);
        shop.setDelFlag(1);
        shopService.updateById(shop);
        //获取门店的员工数据
        UserShop userShop = new UserShop();
        userShop.setShopId(shop.getId());
        List<UserShop> data = userShopClient.getUserShop(userShop).getData();
        List<Integer> collect = data.stream().map(UserShop::getUserId).collect(Collectors.toList()).stream().map(Long::intValue).collect(Collectors.toList());
        List<SysUser> sysUserList = sysUserClient.getUserList(collect).getData();
        //删除门店下的所有员工
        sysUserClient.delShopUser(shop.getId(), 2);
        //修改小程序用户类型和门店数据
        for (SysUser sysUser : sysUserList) {
            String userName = sysUser.getUserName();
            //通过电话号码查询小程序用户和门店关系数据
            AppUser appUser = appUserClient.getAppUserByPhone1(userName).getData();
            //需要先判断用户是否没有关联任何门店
            List<AppUserShop> userShops = appUserShopClient.getAppUserShop(appUser.getId()).getData();
            if(userShops.size() == 1 && userShops.get(0).getShopId().equals(shop.getId())){
                appUser.setUserType(1);
                appUserClient.editAppUserById(appUser);
            }
        }
        return R.ok();
    }
@@ -129,7 +195,72 @@
        if (!shopService.cheUserByPhone(phone)) {
            return R.fail("该手机号未注册");
        }
        Shop old_shop = shopService.getById(shop.getId());
        shopService.updateById(shop);
        //修改管理员
        if(!phone.equals(old_shop.getPhone())){
            AppUser appUser = appUserClient.getAppUserById(old_shop.getAppUserId());
            //需要先判断用户是否没有关联任何门店
            List<AppUserShop> userShops = appUserShopClient.getAppUserShop(appUser.getId()).getData();
            if(userShops.size() == 1 && userShops.get(0).getShopId().equals(shop.getId())){
                appUser.setUserType(1);
                appUserClient.editAppUserById(appUser);
            }
            AppUserShop appUserShop = new AppUserShop();
            appUserShop.setAppUserId(appUser.getId());
            appUserShop.setShopId(shop.getId());
            appUserShopClient.delAppUserShop(appUserShop);
            //添加新管理员
            appUser = appUserClient.getAppUserByPhone1(phone).getData();
            appUserShop = new AppUserShop();
            appUserShop.setAppUserId(appUser.getId());
            appUserShop.setShopId(shop.getId());
            appUserClient.addAppUserShop(appUserShop);
            //修改管理员
            shop.setAppUserId(appUser.getId());
            shopService.updateById(shop);
            //添加门店后台账号和门店关系数据
            SysUser sysUser = sysUserClient.queryUserByUserName(phone).getData();
            if(null != sysUser){
                UserShop userShop = new UserShop();
                userShop.setUserId(sysUser.getUserId());
                userShop.setShopId(shop.getId());
                userShop.setRoleType(1);
                List<UserShop> data = userShopClient.getUserShop(userShop).getData();
                if(null == data || data.size() == 0){
                    userShop = new UserShop();
                    userShop.setUserId(sysUser.getUserId());
                    userShop.setShopId(shop.getId());
                    userShop.setRoleType(1);
                    userShopClient.saveUserShop(userShop);
                }
            }else{
                //添加管理后台账号
                SysUser user = new SysUser();
                user.setDeptId(1L);
                user.setUserName(appUser.getPhone());
                user.setNickName(appUser.getName());
                user.setPhonenumber(appUser.getPhone());
                user.setAvatar(appUser.getAvatar());
                user.setStatus("0");
                user.setDelFlag("0");
                user.setRoleType(2);
                user.setObjectId(shop.getId());
                user.setAppUserId(appUser.getId());
                user.setPassword(phone.substring(5));
                user.setCreateTime(new Date());
                Long userId = sysUserClient.saveShopUser(user).getData();
                UserShop userShop = new UserShop();
                userShop.setUserId(userId);
                userShop.setShopId(shop.getId());
                userShop.setRoleType(1);
                userShopClient.saveUserShop(userShop);
            }
        }
        return R.ok();
    }
@@ -161,9 +292,12 @@
        String[] idsArr = ids.split(",");
        for (String id : idsArr) {
            Shop shop = shopService.getById(Integer.valueOf(id));
            R<SysUser> sysUser = sysUserClient.getSysUser(shop.getAppUserId());
            SysUser userData = sysUser.getData();
            userData.setPassword(getLastSixDigits(userData.getPhonenumber()));
            UserShop userShop = new UserShop();
            userShop.setShopId(shop.getId());
            userShop.setRoleType(1);
            List<UserShop> data = userShopClient.getUserShop(userShop).getData();
            SysUser userData = sysUserClient.getSysUser(data.get(0).getUserId()).getData();
            userData.setPassword(userData.getPhonenumber().substring(5));
            sysUserClient.resetPassword(userData);
        }
        return R.ok();
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
@@ -21,6 +22,9 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
 * <p>
@@ -50,10 +54,22 @@
    public R<IPage<ShopWithdraw>> list(@ApiParam("页码") @RequestParam Integer pageNum,
                         @ApiParam("每一页数据大小") Integer pageSize,
                         ShopWithdraw shopWithdraw) {
        List<Shop> list = shopService.list(new LambdaUpdateWrapper<Shop>().like(StringUtils.isNotEmpty(shopWithdraw.getShopName()), Shop::getName, shopWithdraw.getShopName()).eq(Shop::getDelFlag, 0));
        List<Integer> collect1 = list.stream().map(Shop::getId).collect(Collectors.toList());
        Page<ShopWithdraw> page = shopWithdrawService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<ShopWithdraw>()
                .like(StringUtils.isNotEmpty(shopWithdraw.getShopName()), ShopWithdraw::getShopName, shopWithdraw.getShopName()));
        page.getRecords().forEach(item-> item.setShopName(shopService.getById(item.getShopId()).getName()));
                .in(collect1.size() > 0, ShopWithdraw::getShopId, collect1));
        List<ShopWithdraw> records = page.getRecords();
        List<Integer> collect = records.stream().map(ShopWithdraw::getShopId).collect(Collectors.toList());
        List<Shop> shops = null;
        if(collect.size() > 0){
            shops = shopService.listByIds(collect);
        }
        for(ShopWithdraw item : records){
            Optional<Shop> first = shops.stream().filter(s -> s.getId().equals(item.getId())).findFirst();
            if(first.isPresent()){
                item.setShopName(first.get().getName());
            }
        }
        return R.ok(page);
    }