From 5f21fd4703a6893e4385d55dafbf5b2a1a1d7785 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 27 十一月 2024 20:14:52 +0800 Subject: [PATCH] 完善部分接口逻辑 --- ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java | 8 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java | 29 +++ ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 1 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 119 +++++++++++++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java | 15 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java | 19 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ShoppingCartMapper.java | 5 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ShoppingCartMapper.xml | 4 /dev/null | 8 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 63 +++++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java | 2 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java | 29 +++ ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java | 45 +--- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/RegisterAccount.java | 8 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java | 16 + ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java | 54 +++++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 18 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java | 9 + ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml | 20 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java | 14 + ruoyi-api/ruoyi-api-order/src/main/java/model/ShoppingCart.java | 5 22 files changed, 429 insertions(+), 65 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java index 3e54505..c8cfc28 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java @@ -77,6 +77,10 @@ @ApiModelProperty(value = "最后一次登录时间") @TableField("last_login_time") private LocalDateTime lastLoginTime; + + @ApiModelProperty(value = "顶级推广人id") + @TableField("top_invite_id") + private Long topInviteId; @ApiModelProperty(value = "推广人id") @TableField("invite_user_id") @@ -112,22 +116,62 @@ @ApiModelProperty(value = "可提现金额") @TableField("withdrawable_amount") - private BigDecimal withdrawal_amount; + private BigDecimal withdrawableAmount; @ApiModelProperty(value = "已提现金额") @TableField("withdrawn_amount") - private BigDecimal withdrawn_amount; + private BigDecimal withdrawnAmount; @ApiModelProperty(value = "充值总金额") @TableField("total_recharge_amount") - private BigDecimal total_recharge_amount; + private BigDecimal totalRechargeAmount; @ApiModelProperty(value = "红包总金额") @TableField("total_red_packet_amount") - private BigDecimal total_red_packet_amount; + private BigDecimal totalRedPacketAmount; @ApiModelProperty(value = "分销总金额") @TableField("total_distribution_amount") - private BigDecimal total_distribution_amount; + private BigDecimal totalDistributionAmount; + + @ApiModelProperty(value = "剩余积分") + @TableField("lave_point") + private BigDecimal lavePoint; + + @ApiModelProperty(value = "是否可更换推广人(0=否,1=是)") + @TableField("change_promoter") + private Integer changePromoter; + + @ApiModelProperty(value = "经度") + @TableField("longitude") + private String longitude; + + @ApiModelProperty(value = "纬度") + @TableField("latitude") + private String latitude; + + @ApiModelProperty(value = "省") + @TableField("province") + private String province; + + @ApiModelProperty(value = "省编号") + @TableField("province_code") + private String provinceCode; + + @ApiModelProperty(value = "市") + @TableField("city") + private String city; + + @ApiModelProperty(value = "市编号") + @TableField("city_code") + private String cityCode; + + @ApiModelProperty(value = "区") + @TableField("district") + private String district; + + @ApiModelProperty(value = "区编号") + @TableField("district_code") + private String districtCode; } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShoppingCart.java b/ruoyi-api/ruoyi-api-order/src/main/java/model/ShoppingCart.java similarity index 85% rename from ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShoppingCart.java rename to ruoyi-api/ruoyi-api-order/src/main/java/model/ShoppingCart.java index 410c4df..362caf7 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShoppingCart.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/model/ShoppingCart.java @@ -1,5 +1,6 @@ -package com.ruoyi.other.api.domain; +package model; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -19,8 +20,10 @@ @TableId private Long id; @ApiModelProperty("用户id") + @TableField("app_user_id") private Long appUserId; @ApiModelProperty("商品id") + @TableField("goods_id") private Long goodsId; @ApiModelProperty("数量") private Integer number; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java new file mode 100644 index 0000000..110c0a0 --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsClientFallbackFactory.java @@ -0,0 +1,29 @@ +package com.ruoyi.other.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.domain.Goods; +import com.ruoyi.other.api.feignClient.GoodsClient; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.openfeign.FallbackFactory; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2024/11/27 19:57 + */ +@Slf4j +public class GoodsClientFallbackFactory implements FallbackFactory<GoodsClient> { + + + @Override + public GoodsClient create(Throwable cause) { + return new GoodsClient(){ + + @Override + public R<List<Goods>> getGoodsByType(Integer type) { + return R.fail("根据类型(1=服务商品,2=单品商品)获取商品数据失败:" + cause.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java new file mode 100644 index 0000000..f24bb8d --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java @@ -0,0 +1,29 @@ +package com.ruoyi.other.api.feignClient; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.domain.Goods; +import com.ruoyi.other.api.factory.GoodsClientFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2024/11/27 19:56 + */ +@FeignClient(contextId = "GoodsClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = GoodsClientFallbackFactory.class) +public interface GoodsClient{ + + + /** + * 根据类型(1=服务商品,2=单品商品)获取商品数据 + * @param type + * @return + */ + @PostMapping("/goods/getGoodsByType") + R<List<Goods>> getGoodsByType(@RequestParam("type") Integer type); + +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index e69de29..18c9676 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.ruoyi.other.api.factory.GoodsClientFallbackFactory \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java index 951d83d..f4e88db 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java @@ -4,24 +4,28 @@ import java.util.Objects; import com.ruoyi.common.core.constant.HttpStatus; import com.ruoyi.common.core.utils.StringUtils; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; /** * 操作消息提醒 * * @author ruoyi */ -public class AjaxResult<T> extends HashMap<String, Object> -{ - private static final long serialVersionUID = 1L; +@ApiModel +public class AjaxResult<T> extends HashMap { /** 状态码 */ - public static final String CODE_TAG = "code"; + @ApiModelProperty("状态码") + private int code; /** 返回内容 */ - public static final String MSG_TAG = "msg"; + @ApiModelProperty("描述内容") + private String msg = ""; /** 数据对象 */ - public static final String DATA_TAG = "data"; + @ApiModelProperty("结果集") + private T data; /** * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 @@ -38,8 +42,8 @@ */ public AjaxResult(int code, String msg) { - super.put(CODE_TAG, code); - super.put(MSG_TAG, msg); + this.code = code; + this.msg = msg; } /** @@ -49,12 +53,12 @@ * @param msg 返回内容 * @param data 数据对象 */ - public AjaxResult(int code, String msg, Object data) + public AjaxResult(int code, String msg, T data) { - super.put(CODE_TAG, code); - super.put(MSG_TAG, msg); + this.code = code; + this.msg = msg; if (StringUtils.isNotNull(data)) { - super.put(DATA_TAG, data); + this.data = data; } } @@ -181,7 +185,7 @@ */ public boolean isSuccess() { - return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG)); + return Objects.equals(HttpStatus.SUCCESS, this.code); } /** @@ -195,19 +199,4 @@ } - - - /** - * 方便链式调用 - * - * @param key - * @param value - * @return - */ - @Override - public AjaxResult put(String key, Object value) - { - super.put(key, value); - return this; - } } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/BaseTable.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/BaseTable.java deleted file mode 100644 index 07059f6..0000000 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/BaseTable.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ruoyi.common.core.web.page; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author zhibing.pu - * @Date 2024/11/25 10:45 - */ -@Data -public class BaseTable<T> implements Serializable { - /** 总记录数 */ - private long total; - - /** 列表数据 */ - private List<T> rows; -} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java index c294089..5092f3f 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java @@ -8,7 +8,7 @@ * * @author ruoyi */ -public class TableDataInfo implements Serializable +public class TableDataInfo<T> implements Serializable { private static final long serialVersionUID = 1L; @@ -16,7 +16,7 @@ private long total; /** 列表数据 */ - private List<?> rows; + private List<T> rows; /** 消息状态码 */ private int code; @@ -37,7 +37,7 @@ * @param list 列表数据 * @param total 总记录数 */ - public TableDataInfo(List<?> list, int total) + public TableDataInfo(List<T> list, int total) { this.rows = list; this.total = total; @@ -58,7 +58,7 @@ return rows; } - public void setRows(List<?> rows) + public void setRows(List<T> rows) { this.rows = rows; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 35c2bcd..203f152 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -148,7 +148,7 @@ ajax.put("posts", postService.selectPostAll()); if (StringUtils.isNotNull(userId)) { SysUser sysUser = userService.selectUserById(userId); - ajax.put(AjaxResult.DATA_TAG, sysUser); + ajax.put("data", sysUser); ajax.put("postIds", postService.selectPostListByUserId(userId)); ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java index 752b1e7..fa51932 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java @@ -1,6 +1,7 @@ package com.ruoyi.account.controller; +import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.service.AppUserService; import com.ruoyi.account.vo.*; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -63,8 +64,7 @@ @PostMapping("/registerAccount") @ApiOperation(value = "注册新账号") public AjaxResult<LoginVo> registerAccount(@RequestBody RegisterAccount registerAccount){ - // todo 待完善 pu - return AjaxResult.success(); + return appUserService.registerAccount(registerAccount); } @@ -75,8 +75,10 @@ @ApiImplicitParam(name = "id", value = "推荐人id", required = true, dataType = "long") }) public AjaxResult<String> getReferrer(@PathVariable("id") Long id){ - // todo 待完善 pu - return AjaxResult.success(); + AppUser appUser = appUserService.getById(id); + String phone = appUser.getPhone(); + phone = phone.substring(0, 3) + "****" + phone.substring(7); + return AjaxResult.success(appUser.getName() + "-" + phone); } @@ -85,9 +87,13 @@ @GetMapping("/getNearbyReferrer") @ApiOperation(value = "获取附近推荐人列表") public AjaxResult<BaseTable<NearbyReferrerVo>> getNearbyReferrer(NearbyReferrer nearbyReferrer){ - // todo 待完善 pu - return AjaxResult.success(); + BaseTable<NearbyReferrerVo> baseTable = appUserService.getNearbyReferrer(nearbyReferrer); + return AjaxResult.success(baseTable); } + + + + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java index fe42c3f..030983c 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserMapper.java @@ -2,6 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.account.vo.NearbyReferrer; +import com.ruoyi.account.vo.NearbyReferrerVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -12,5 +17,15 @@ * @since 2024-11-21 */ public interface AppUserMapper extends BaseMapper<AppUser> { + + + /** + * 获取附件推广人 + * @param cityCode + * @return + */ + List<NearbyReferrerVo> getNearbyReferrer(@Param("cityCode") String cityCode, @Param("nearbyReferrer") NearbyReferrer nearbyReferrer); + + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java index 805c00e..ad67359 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java @@ -4,6 +4,7 @@ import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.vo.*; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.page.BaseTable; import org.springframework.web.bind.annotation.RequestBody; /** @@ -47,4 +48,12 @@ * @return */ AjaxResult<LoginVo> registerAccount(RegisterAccount registerAccount); + + + /** + * 获取附近的推广人 + * @param nearbyReferrer + * @return + */ + BaseTable<NearbyReferrerVo> getNearbyReferrer(NearbyReferrer nearbyReferrer); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java index 5b3c712..f50c1db 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java @@ -8,13 +8,17 @@ import com.ruoyi.account.util.weChat.WeChatUtil; import com.ruoyi.account.vo.*; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.page.BaseTable; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.system.api.model.LoginUser; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -164,6 +168,119 @@ */ @Override public AjaxResult<LoginVo> registerAccount(RegisterAccount registerAccount) { - return null; + //校验验证码 + String code = redisService.getCacheObject(registerAccount.getPhone()); + if(null == code || !code.equals(registerAccount.getCode())){ + return AjaxResult.error("验证码错误"); + } + //使用jscode获取微信openid + Map<String, Object> map = weChatUtil.code2Session(registerAccount.getJscode()); + Integer errcode = Integer.valueOf(map.get("errcode").toString()); + if(0 != errcode){ + return AjaxResult.error(map.get("msg").toString()); + } + String openid = map.get("openid").toString(); + //查询用户是否注册 + AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); + if(null != appUser){ + return AjaxResult.error("此微信号已注册,请直接登录!"); + } + AppUser appUser1 = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, registerAccount.getPhone()).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); + if(null != appUser1){ + return AjaxResult.error("手机号已注册,请直接登录!"); + } + if(null == appUser){ + appUser = new AppUser(); + appUser.setName(registerAccount.getName()); + appUser.setPhone(registerAccount.getPhone()); + appUser.setWxOpenid(openid); + //注册默认为普通会员 + appUser.setVipId(1); + appUser.setStatus(1); + appUser.setCreateTime(LocalDateTime.now()); + appUser.setDelFlag(false); + appUser.setFirstAdd(1); + appUser.setLastLoginTime(LocalDateTime.now()); + //顶级推广人 + AppUser topAppUser = getTopAppUser(registerAccount.getPromoter()); + appUser.setTopInviteId(topAppUser.getId()); + //绑定门店为推荐人绑定的门店 + AppUser appUser2 = this.getById(registerAccount.getPromoter()); + appUser.setInviteUserId(registerAccount.getPromoter()); + appUser.setShopId(appUser2.getShopId()); + appUser.setPartPoint(BigDecimal.ZERO); + appUser.setPartGrowPoint(BigDecimal.ZERO); + appUser.setShopPoint(BigDecimal.ZERO); + appUser.setSharePoint(BigDecimal.ZERO); + appUser.setShopAmount(BigDecimal.ZERO); + appUser.setWithdrawableAmount(BigDecimal.ZERO); + appUser.setWithdrawnAmount(BigDecimal.ZERO); + appUser.setTotalRechargeAmount(BigDecimal.ZERO); + appUser.setTotalRedPacketAmount(BigDecimal.ZERO); + appUser.setTotalDistributionAmount(BigDecimal.ZERO); + appUser.setLavePoint(BigDecimal.ZERO); + //根据平台的配置未达标,则标注为可修改推广人 + appUser.setChangePromoter(0); + appUser.setLongitude(registerAccount.getLongitude()); + appUser.setLatitude(registerAccount.getLatitude()); + //调用地图获取省市区数据 + appUser.setProvince(); + appUser.setProvinceCode(); + appUser.setCity(); + appUser.setCityCode(); + appUser.setDistrict(); + appUser.setDistrictCode(); + this.save(appUser); + } + LoginVo loginVo = new LoginVo(); + loginVo.setSkipPage(1); + loginVo.setFirstTime(false); + loginVo.setPhone(appUser.getPhone()); + //构建token + LoginUser loginUser = new LoginUser(); + loginUser.setUserid(appUser.getId()); + loginUser.setUsername(appUser.getName()); + Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser); + loginVo.setToken(tokenApplet.get("access_token").toString()); + loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString())); + return AjaxResult.success(loginVo); + } + + + /** + * 递归查询顶级推广人 + * @param id + * @return + */ + public AppUser getTopAppUser(Long id){ + List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0)); + return getTopAppUser(list, id); + } + + public AppUser getTopAppUser(List<AppUser> list, Long id){ + AppUser appUser = list.stream().filter(s -> s.getInviteUserId().equals(id)).findFirst().get(); + if(null == appUser.getInviteUserId()){ + return appUser; + } + return getTopAppUser(list, appUser.getId()); + } + + + /** + * 获取附近推广人 + * @param nearbyReferrer + * @return + */ + @Override + public BaseTable<NearbyReferrerVo> getNearbyReferrer(NearbyReferrer nearbyReferrer) { + //使用地图获取省市区数据 + String longitude = nearbyReferrer.getLongitude(); + String latitude = nearbyReferrer.getLatitude(); + String cityCode = ""; + List<NearbyReferrerVo> list = this.baseMapper.getNearbyReferrer(cityCode, nearbyReferrer); + BaseTable baseTable = new BaseTable(); + baseTable.setRows(list); + baseTable.setTotal(list.size()); + return baseTable; } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/RegisterAccount.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/RegisterAccount.java index 8084e52..41e9cb7 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/RegisterAccount.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/RegisterAccount.java @@ -11,7 +11,9 @@ @Data @ApiModel public class RegisterAccount { - @ApiModelProperty(value = "推广人id", required = false) + @ApiModelProperty(value = "微信jscode", required = true) + private String jscode; + @ApiModelProperty(value = "推广人id", required = true) private Long promoter; @ApiModelProperty(value = "头像", required = true) private String avatar; @@ -21,4 +23,8 @@ private String phone; @ApiModelProperty(value = "短信验证码", required = true) private String code; + @ApiModelProperty(value = "经度", required = true) + private String longitude; + @ApiModelProperty(value = "纬度", required = true) + private String latitude; } diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml index 550f7bb..2e1a6e4 100644 --- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml +++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml @@ -31,4 +31,24 @@ id, name, phone, avatar, vip_id, wx_openid, ali_openid, status, create_time, del_flag, first_add, last_login_time, invite_user_id, shop_id, part_point, part_grow_point, shop_point, share_point, shop_amount, last_shop_time </sql> + + + + <select id="getNearbyReferrer" resultType="com.ruoyi.account.vo.NearbyReferrerVo"> + select * from ( + select + id, + avatar, + `name`, + vip_id as vip, + ST_Distance_Sphere( + point(#{nearbyReferrer.longitude},#{nearbyReferrer.latitude}), + point(longitude, latitude) + ) as distance + from t_app_user where city_code = #{cityCode} and del_flag = 0 and status = 1 + <if test="null != nearbyReferrer.name and '' != nearbyReferrer.name"> + and `name` like CONCAT('%', #{nearbyReferrer.name}, '%') + </if> + ) as aa order by aa.distance + </select> </mapper> diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java index d9e7874..6132371 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java @@ -1,7 +1,10 @@ package com.ruoyi.order.controller; +import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BaseTable; +import com.ruoyi.common.core.web.page.TableDataInfo; +import com.ruoyi.order.service.ShoppingCartService; import com.ruoyi.order.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -9,12 +12,15 @@ import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; + @RestController @RequestMapping("/shopping-cart") @Api(tags = "购物车") -public class ShoppingCartController { +public class ShoppingCartController extends BaseController { - + @Resource + private ShoppingCartService shoppingCartService; @ResponseBody @@ -24,9 +30,9 @@ @ApiImplicitParam(name = "type", value = "商品类型(1=服务商品,2=单品商品)", required = true, dataType = "int"), @ApiImplicitParam(name = "shopId", value = "核销门店id", required = true, dataType = "int") }) - public AjaxResult<BaseTable<MyShoppingCartVo>> getMyShoppingCart(@PathVariable("type") Integer type, @PathVariable("shopId") Integer shopId){ - // todo 待完善 pu - return AjaxResult.success(); + public TableDataInfo<MyShoppingCartVo> getMyShoppingCart(@PathVariable("type") Integer type, @PathVariable("shopId") Integer shopId){ + startPage(); + return getDataTable(shoppingCartService.getMyShoppingCart(type, shopId)); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShoppingCartMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ShoppingCartMapper.java similarity index 62% rename from ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShoppingCartMapper.java rename to ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ShoppingCartMapper.java index 8c645e2..19d6849 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShoppingCartMapper.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ShoppingCartMapper.java @@ -1,7 +1,8 @@ -package com.ruoyi.other.mapper; +package com.ruoyi.order.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.ruoyi.other.api.domain.ShoppingCart; +import model.ShoppingCart; public interface ShoppingCartMapper extends BaseMapper<ShoppingCart> { + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java new file mode 100644 index 0000000..73e5900 --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java @@ -0,0 +1,19 @@ +package com.ruoyi.order.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.order.vo.MyShoppingCartVo; +import model.ShoppingCart; + +import java.util.List; + +public interface ShoppingCartService extends IService<ShoppingCart> { + + + /** + * 获取购物车列表数据 + * @param type + * @param shopId + * @return + */ + List<MyShoppingCartVo> getMyShoppingCart(Integer type, Integer shopId); +} diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java new file mode 100644 index 0000000..829c037 --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java @@ -0,0 +1,63 @@ +package com.ruoyi.order.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.order.mapper.ShoppingCartMapper; +import com.ruoyi.order.service.ShoppingCartService; +import com.ruoyi.order.vo.MyShoppingCartVo; +import com.ruoyi.other.api.domain.Goods; +import com.ruoyi.other.api.feignClient.GoodsClient; +import model.ShoppingCart; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, ShoppingCart> implements ShoppingCartService { + + @Resource + private TokenService tokenService; + + @Resource + private GoodsClient goodsClient; + + + + + + + + /** + * 获取购物车列表 + * @param type + * @param shopId + * @return + */ + @Override + public List<MyShoppingCartVo> getMyShoppingCart(Integer type, Integer shopId) { + Long userid = tokenService.getLoginUserApplet().getUserid(); + //获取对应类型的商品数据 + List<Goods> data = goodsClient.getGoodsByType(type).getData(); + if(null == data){ + throw new RuntimeException("根据类型(1=服务商品,2=单品商品)获取商品数据失败"); + } + List<Long> goodsIds = data.stream().map(Goods::getId).collect(Collectors.toList()); + //查询符合商品类型的商品数据 + List<ShoppingCart> list = this.list(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid).in(ShoppingCart::getGoodsId, goodsIds)); + List<MyShoppingCartVo> page = new ArrayList<>(); + //构建返回数据 + for (ShoppingCart shoppingCart : list) { + MyShoppingCartVo vo = new MyShoppingCartVo(); + + + + + page.add(vo); + } + return page; + } +} diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ShoppingCartMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ShoppingCartMapper.xml new file mode 100644 index 0000000..48ea887 --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ShoppingCartMapper.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.order.mapper.ShoppingCartMapper"> +</mapper> \ No newline at end of file diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java index b414fac..7a6c1b9 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java @@ -1,6 +1,7 @@ package com.ruoyi.other.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -62,10 +63,19 @@ public R<GoodsVO> goodsDetail(@PathVariable("goodsId") Long goodsId){ return R.ok(goodsService.goodsDetail(goodsId)); } - - + /** + * 根据类型(1=服务商品,2=单品商品)获取商品数据 + * @param type + * @return + */ + @ResponseBody + @PostMapping("/getGoodsByType") + public R<List<Goods>> getGoodsByType(@RequestParam("type") Integer type){ + List<Goods> list = goodsService.list(new LambdaQueryWrapper<Goods>().eq(Goods::getType, type).eq(Goods::getDelFlag, 0).eq(Goods::getStatus, 2)); + return R.ok(list); + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java index ff065e3..a36cea4 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/PhoneController.java @@ -10,6 +10,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -35,7 +36,7 @@ /** * 查询指定门店手机号 */ - @RequestMapping("/selectPhoneByShopId") + @GetMapping("/selectPhoneByShopId") @ApiOperation(value = "查询指定门店手机号", tags = {"小程序-门店详情"}) public R<List<Phone>> getPhoneByShopId(@ApiParam("门店id") @RequestParam Integer shopId) { return R.ok(phoneService.list(new LambdaQueryWrapper<Phone>() diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShoppingCartService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShoppingCartService.java deleted file mode 100644 index fdaa67b..0000000 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShoppingCartService.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.ruoyi.other.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.ruoyi.other.api.domain.ShoppingCart; - -public interface ShoppingCartService extends IService<ShoppingCart> { -} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShoppingCartServiceImpl.java deleted file mode 100644 index 887ae3f..0000000 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShoppingCartServiceImpl.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.ruoyi.other.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.other.api.domain.ShoppingCart; -import com.ruoyi.other.mapper.ShoppingCartMapper; -import com.ruoyi.other.service.ShoppingCartService; -import org.springframework.stereotype.Service; - -@Service -public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, ShoppingCart> implements ShoppingCartService { -} diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShoppingCartMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShoppingCartMapper.xml deleted file mode 100644 index 2182ba7..0000000 --- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShoppingCartMapper.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.other.mapper.ShoppingCartMapper"> - - <select id="selectNearbyShopList" resultType="com.ruoyi.other.vo.NearbyShopVO"> - - </select> -</mapper> \ No newline at end of file -- Gitblit v1.7.1