Pu Zhibing
2025-01-04 c8ea2d96f5b0522a09f3203ae98fe796084d2d15
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -11,12 +11,16 @@
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.order.vo.VerifiableShopVo;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.domain.ShopScore;
import com.ruoyi.other.mapper.ShopMapper;
import com.ruoyi.other.service.ShopScoreService;
import com.ruoyi.other.service.ShopService;
import com.ruoyi.other.util.GeodesyUtil;
import com.ruoyi.other.util.tencentMap.TencentMapUtil;
import com.ruoyi.other.vo.NearbyShopVO;
import com.ruoyi.other.vo.SaveWithdrawalAccount;
import com.ruoyi.other.vo.ShopDetailVO;
import com.ruoyi.other.vo.ShopStatistics;
import com.ruoyi.system.api.domain.SysUser;
@@ -34,10 +38,7 @@
import javax.annotation.Resource;
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.*;
import java.util.stream.Collectors;
/**
@@ -95,6 +96,10 @@
        shop.setServerOrderNumber(0);
        shop.setCustomOrderNumber(0);
        shop.setAppUserId(appUser.getId());
        String city = TencentMapUtil.inverseGeographicalAnalysis(shop.getLongitude(), shop.getLatitude(), false);
        shop.setProvinceCode(city.substring(0, 2) + "0000");
        shop.setCityCode(city.substring(0, 4) + "00");
        shop.setDistrictCode(city);
        shopService.save(shop);
        AppUserShop appUserShop = new AppUserShop();
@@ -195,71 +200,73 @@
        if (!shopService.cheUserByPhone(phone)) {
            return R.fail("该手机号未注册");
        }
        String city = TencentMapUtil.inverseGeographicalAnalysis(shop.getLongitude(), shop.getLatitude(), false);
        shop.setProvinceCode(city.substring(0, 2) + "0000");
        shop.setCityCode(city.substring(0, 4) + "00");
        shop.setDistrictCode(city);
        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 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);
        //添加新管理员
        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);
        //修改管理员
        shop.setAppUserId(appUser.getId());
        shopService.updateById(shop);
            //添加门店后台账号和门店关系数据
            SysUser sysUser = sysUserClient.queryUserByUserName(phone).getData();
            if(null != sysUser){
                UserShop userShop = new UserShop();
        //添加门店后台账号和门店关系数据
        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);
                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);
            }
        }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();
    }
@@ -448,5 +455,64 @@
    public void updateShop(@RequestBody Shop shop){
        shopService.updateById(shop);
    }
    @ResponseBody
    @GetMapping("/getVerifiableShop")
    @ApiOperation(value = "获取可核销门店列表", tags = {"购物车-小程序"})
    public R<List<VerifiableShopVo>> getVerifiableShop(String longitude, String latitude){
        String city = TencentMapUtil.inverseGeographicalAnalysis(longitude, latitude, false);
        city = city.substring(0, 4) + "00";
        List<Shop> list = shopService.list(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getCityCode, city));
        List<VerifiableShopVo> verifiableShopVoList = new ArrayList<>();
        for (Shop shop : list) {
            VerifiableShopVo vo = new VerifiableShopVo();
            vo.setId(shop.getId());
            vo.setName(shop.getName());
            Double wgs84 = GeodesyUtil.getDistance(longitude + "," + latitude, shop.getLongitude() + "," + shop.getLatitude()).get("WGS84");
            vo.setDistance(wgs84.longValue());
            verifiableShopVoList.add(vo);
        }
        verifiableShopVoList.sort(new Comparator<VerifiableShopVo>() {
            @Override
            public int compare(VerifiableShopVo o1, VerifiableShopVo o2) {
                return o1.getDistance().compareTo(o2.getDistance());
            }
        });
        return R.ok(verifiableShopVoList);
    }
    @ResponseBody
    @GetMapping("/getSysUserShop")
    @ApiOperation(value = "获取可切换的门店列表", tags = {"门店后台-首页"})
    public R<List<VerifiableShopVo>> getSysUserShop(){
        Long userid = tokenService.getLoginUser().getUserid();
        UserShop userShop = new UserShop();
        userShop.setUserId(userid);
        List<UserShop> data = userShopClient.getUserShop(userShop).getData();
        List<Integer> collect = data.stream().map(UserShop::getShopId).collect(Collectors.toList());
        List<Shop> shops = shopService.listByIds(collect);
        List<VerifiableShopVo> list = new ArrayList<>();
        for (Shop shop : shops) {
            VerifiableShopVo vo = new VerifiableShopVo();
            vo.setId(shop.getId());
            vo.setName(shop.getName());
            list.add(vo);
        }
        return R.ok(list);
    }
    @PostMapping("/saveWithdrawalAccount")
    @ApiOperation(value = "保存提现账户", tags = {"门店后台-财务统计-提现明细"})
    public R saveWithdrawalAccount(SaveWithdrawalAccount saveWithdrawalAccount) {
        shopService.saveWithdrawalAccount(saveWithdrawalAccount);
        return R.ok();
    }
}