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