微信小程序 提审时隐藏功能;微信小程序添加微信快捷登录、随便看看(登的user用户)
This commit is contained in:
		
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							@@ -318,6 +318,18 @@ window.wsUrl = 'ws://127.0.0.1:80/access/websocket/1';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##### 配置小程序 APPID 与 APPSECRET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					修改 `backend/microservice-provider-access-8002/src/main/java/com/cxyxiaomo/epp/access/service/WeChatTokenServiceImpl.java` 文件
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					    // 小程序信息
 | 
				
			||||||
 | 
					    final String APPID = "【⚠此处修改为你的小程序 APPID】";
 | 
				
			||||||
 | 
					    final String APPSECRET = "【⚠此处修改为你的小程序 APPSECRET】";
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### nginx 代理配置(可选)
 | 
					#### nginx 代理配置(可选)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
配置文件在 `nginx-conf` 目录下(不能直接拿来用,需要根据自己的实际情况来改)
 | 
					配置文件在 `nginx-conf` 目录下(不能直接拿来用,需要根据自己的实际情况来改)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,4 +25,5 @@ public class User implements Serializable {
 | 
				
			|||||||
    private String doorplate;
 | 
					    private String doorplate;
 | 
				
			||||||
    private String permission;
 | 
					    private String permission;
 | 
				
			||||||
    private LocalDateTime permissionTime;
 | 
					    private LocalDateTime permissionTime;
 | 
				
			||||||
 | 
					    private String wxcode;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,9 @@ package com.cxyxiaomo.epp.gateway.controller;
 | 
				
			|||||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
					import org.springframework.web.bind.annotation.RequestMapping;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RestController;
 | 
					import org.springframework.web.bind.annotation.RestController;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.LinkedList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@RestController
 | 
					@RestController
 | 
				
			||||||
public class Controller {
 | 
					public class Controller {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -10,4 +13,35 @@ public class Controller {
 | 
				
			|||||||
    public String error() {
 | 
					    public String error() {
 | 
				
			||||||
        return "[ERROR] 500 Internal Server Error";
 | 
					        return "[ERROR] 500 Internal Server Error";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 为了通过微信的小程序审核所特别处理的
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @RequestMapping("/getConfig")
 | 
				
			||||||
 | 
					    public HashMap<String, Object> WxMiniProgramAuditSpecialHandle() {
 | 
				
			||||||
 | 
					        boolean showCode = true;
 | 
				
			||||||
 | 
					        boolean showShop = true;
 | 
				
			||||||
 | 
					        LinkedList<String> tabbarItem = new LinkedList<>();
 | 
				
			||||||
 | 
					        tabbarItem.push("pages/index/index");
 | 
				
			||||||
 | 
					        if (showCode) tabbarItem.push("pages/residents/code");
 | 
				
			||||||
 | 
					        tabbarItem.push("pages/residents/report");
 | 
				
			||||||
 | 
					        if (showShop) tabbarItem.push("pages/shop/shop");
 | 
				
			||||||
 | 
					        tabbarItem.push("pages/person/person");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LinkedList<String> indexItem = new LinkedList<>();
 | 
				
			||||||
 | 
					        indexItem.push("/pages/index/login");
 | 
				
			||||||
 | 
					        if (showCode) indexItem.push("/pages/residents/code");
 | 
				
			||||||
 | 
					        if (showCode) indexItem.push("scanQRCode");
 | 
				
			||||||
 | 
					        indexItem.push("/pages/residents/report");
 | 
				
			||||||
 | 
					        if (showShop) indexItem.push("/pages/shop/shop");
 | 
				
			||||||
 | 
					        indexItem.push("/pages/person/person");
 | 
				
			||||||
 | 
					        indexItem.push("/pages/person/updpwd");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        HashMap<String, Object> map = new HashMap<>();
 | 
				
			||||||
 | 
					        map.put("tabbarItem", tabbarItem);
 | 
				
			||||||
 | 
					        map.put("indexItem", indexItem);
 | 
				
			||||||
 | 
					        return map;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 | 
				
			|||||||
import org.springframework.web.bind.annotation.RequestParam;
 | 
					import org.springframework.web.bind.annotation.RequestParam;
 | 
				
			||||||
import org.springframework.web.bind.annotation.ResponseBody;
 | 
					import org.springframework.web.bind.annotation.ResponseBody;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Controller
 | 
					@Controller
 | 
				
			||||||
@RequestMapping("/access/wechat")
 | 
					@RequestMapping("/access/wechat")
 | 
				
			||||||
public class WeChatTokenController {
 | 
					public class WeChatTokenController {
 | 
				
			||||||
@@ -47,4 +49,18 @@ public class WeChatTokenController {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return responseBody.bytes();
 | 
					        return responseBody.bytes();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping(value = "/rpc/getOpenIdFromApi")
 | 
				
			||||||
 | 
					    @ResponseBody
 | 
				
			||||||
 | 
					    @SneakyThrows
 | 
				
			||||||
 | 
					    public Res getOpenIdFromApi(@RequestParam(value = "code", required = true) String code) {
 | 
				
			||||||
 | 
					        if (Objects.isNull(code) || "".equals(code)) {
 | 
				
			||||||
 | 
					            return Res.error("参数错误");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        String openId = weChatTokenService.getOpenIdFromApi(code);
 | 
				
			||||||
 | 
					        if (openId == null) {
 | 
				
			||||||
 | 
					            return Res.error("微信OpenId接口调用失败,请刷新重试");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return Res.success(openId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -97,8 +97,8 @@ public class WeChatTokenServiceImpl implements WeChatTokenService {
 | 
				
			|||||||
        params.put("check_path", unlimitedQRCodeParam.getCheckPath());
 | 
					        params.put("check_path", unlimitedQRCodeParam.getCheckPath());
 | 
				
			||||||
        params.put("env_version", unlimitedQRCodeParam.getEnvVersion());
 | 
					        params.put("env_version", unlimitedQRCodeParam.getEnvVersion());
 | 
				
			||||||
        params.put("width", unlimitedQRCodeParam.getWidth());
 | 
					        params.put("width", unlimitedQRCodeParam.getWidth());
 | 
				
			||||||
        params.put("auto_color",unlimitedQRCodeParam.getAutoColor());
 | 
					        params.put("auto_color", unlimitedQRCodeParam.getAutoColor());
 | 
				
			||||||
        params.put("is_hyaline",unlimitedQRCodeParam.getIsHyaline());
 | 
					        params.put("is_hyaline", unlimitedQRCodeParam.getIsHyaline());
 | 
				
			||||||
        String paramsString = JSON.toJSONString(params);
 | 
					        String paramsString = JSON.toJSONString(params);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OkHttpClient okHttpClient = new OkHttpClient();
 | 
					        OkHttpClient okHttpClient = new OkHttpClient();
 | 
				
			||||||
@@ -108,11 +108,40 @@ public class WeChatTokenServiceImpl implements WeChatTokenService {
 | 
				
			|||||||
                .post(RequestBody.create(paramsString, MediaType.parse("application/json; charset=utf-8")))
 | 
					                .post(RequestBody.create(paramsString, MediaType.parse("application/json; charset=utf-8")))
 | 
				
			||||||
                .build();
 | 
					                .build();
 | 
				
			||||||
        Response response = okHttpClient.newCall(request).execute();
 | 
					        Response response = okHttpClient.newCall(request).execute();
 | 
				
			||||||
        // String result = response.body()response.body().string();
 | 
					        // String result = response.body().string();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // System.out.println("headers: " + response.headers());
 | 
					        // System.out.println("headers: " + response.headers());
 | 
				
			||||||
        // System.out.println("body: " + response.body());
 | 
					        // System.out.println("body: " + response.body());
 | 
				
			||||||
        System.out.println("paramsString: " + paramsString);
 | 
					        System.out.println("paramsString: " + paramsString);
 | 
				
			||||||
        return response.body();
 | 
					        return response.body();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SneakyThrows
 | 
				
			||||||
 | 
					    public String getOpenIdFromApi(String code) {
 | 
				
			||||||
 | 
					        // refer:
 | 
				
			||||||
 | 
					        // https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html
 | 
				
			||||||
 | 
					        // https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html
 | 
				
			||||||
 | 
					        String url = String.format("https://api.weixin.qq.com/sns/jscode2session?" +
 | 
				
			||||||
 | 
					                "appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", APPID, APPSECRET, code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OkHttpClient okHttpClient = new OkHttpClient();
 | 
				
			||||||
 | 
					        Request request = new Request.Builder()
 | 
				
			||||||
 | 
					                .url(url)
 | 
				
			||||||
 | 
					                .get()
 | 
				
			||||||
 | 
					                .build();
 | 
				
			||||||
 | 
					        Response response = okHttpClient.newCall(request).execute();
 | 
				
			||||||
 | 
					        ResponseBody body = response.body();
 | 
				
			||||||
 | 
					        if (body != null) {
 | 
				
			||||||
 | 
					            String jsonString = body.string();
 | 
				
			||||||
 | 
					            // {"session_key":"7DnwgV6kUALcO+j65k5Gcw==","openid":"oFzuC4pvbPzY7vI6vmP6_57iTk-U","unionid":"oZxJH1kLie37EpC4FzslnCcWDEA4"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            JSONObject result = JSONObject.parseObject(jsonString);
 | 
				
			||||||
 | 
					            String openId = result.getString("openid");
 | 
				
			||||||
 | 
					            System.out.println("body: " + body + ", result: " + result);
 | 
				
			||||||
 | 
					            return openId;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,6 +82,16 @@
 | 
				
			|||||||
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 | 
					            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!-- OpenFeign -->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework.cloud</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-cloud-starter-openfeign</artifactId>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework.cloud</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- 分页 -->
 | 
					        <!-- 分页 -->
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>com.github.pagehelper</groupId>
 | 
					            <groupId>com.github.pagehelper</groupId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,11 +3,13 @@ package com.cxyxiaomo.epp.user;
 | 
				
			|||||||
import org.springframework.boot.SpringApplication;
 | 
					import org.springframework.boot.SpringApplication;
 | 
				
			||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
					import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
				
			||||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 | 
					import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 | 
				
			||||||
 | 
					import org.springframework.cloud.openfeign.EnableFeignClients;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 启动类
 | 
					// 启动类
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SpringBootApplication
 | 
					@SpringBootApplication
 | 
				
			||||||
@EnableDiscoveryClient
 | 
					@EnableDiscoveryClient
 | 
				
			||||||
 | 
					@EnableFeignClients
 | 
				
			||||||
public class UserProvider {
 | 
					public class UserProvider {
 | 
				
			||||||
    public static void main(String[] args) {
 | 
					    public static void main(String[] args) {
 | 
				
			||||||
        SpringApplication.run(UserProvider.class, args);
 | 
					        SpringApplication.run(UserProvider.class, args);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@ import com.cxyxiaomo.epp.common.pojo.Role;
 | 
				
			|||||||
import com.cxyxiaomo.epp.common.pojo.User;
 | 
					import com.cxyxiaomo.epp.common.pojo.User;
 | 
				
			||||||
import com.cxyxiaomo.epp.common.response.Res;
 | 
					import com.cxyxiaomo.epp.common.response.Res;
 | 
				
			||||||
import com.cxyxiaomo.epp.common.vo.UserVO;
 | 
					import com.cxyxiaomo.epp.common.vo.UserVO;
 | 
				
			||||||
 | 
					import com.cxyxiaomo.epp.user.rpc.WeChatTokenServiceFeign;
 | 
				
			||||||
import com.cxyxiaomo.epp.user.service.RoleService;
 | 
					import com.cxyxiaomo.epp.user.service.RoleService;
 | 
				
			||||||
import com.cxyxiaomo.epp.user.service.UserService;
 | 
					import com.cxyxiaomo.epp.user.service.UserService;
 | 
				
			||||||
import com.github.pagehelper.PageHelper;
 | 
					import com.github.pagehelper.PageHelper;
 | 
				
			||||||
@@ -25,10 +26,7 @@ import org.springframework.web.bind.annotation.*;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
import java.text.SimpleDateFormat;
 | 
					import java.text.SimpleDateFormat;
 | 
				
			||||||
import java.util.Calendar;
 | 
					import java.util.*;
 | 
				
			||||||
import java.util.Date;
 | 
					 | 
				
			||||||
import java.util.HashMap;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Controller
 | 
					@Controller
 | 
				
			||||||
@RequestMapping("/user")
 | 
					@RequestMapping("/user")
 | 
				
			||||||
@@ -40,6 +38,9 @@ public class UserController {
 | 
				
			|||||||
    @Resource
 | 
					    @Resource
 | 
				
			||||||
    private RoleService roleService;
 | 
					    private RoleService roleService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Resource
 | 
				
			||||||
 | 
					    private WeChatTokenServiceFeign weChatTokenService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 用户登录
 | 
					     * 用户登录
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -50,6 +51,12 @@ public class UserController {
 | 
				
			|||||||
    @PostMapping("/login")
 | 
					    @PostMapping("/login")
 | 
				
			||||||
    @ResponseBody
 | 
					    @ResponseBody
 | 
				
			||||||
    public Res login(@RequestParam("username") String username, @RequestParam("password") String password) {
 | 
					    public Res login(@RequestParam("username") String username, @RequestParam("password") String password) {
 | 
				
			||||||
 | 
					        // 微信小程序 随便看看
 | 
				
			||||||
 | 
					        if (Objects.equals(username, "#fastLogin#") && Objects.equals(password, "#fastLogin#")) {
 | 
				
			||||||
 | 
					            username = "user";
 | 
				
			||||||
 | 
					            password = "user";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        User user = userService.getUserByUsername(username);
 | 
					        User user = userService.getUserByUsername(username);
 | 
				
			||||||
        if (user != null) {
 | 
					        if (user != null) {
 | 
				
			||||||
            String passwordHash = DigestUtils.sha512Hex(password);
 | 
					            String passwordHash = DigestUtils.sha512Hex(password);
 | 
				
			||||||
@@ -65,6 +72,49 @@ public class UserController {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 微信小程序用户登录
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param code
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @PostMapping("/wxlogin")
 | 
				
			||||||
 | 
					    @ResponseBody
 | 
				
			||||||
 | 
					    public Res wxlogin(@RequestParam("code") String code) {
 | 
				
			||||||
 | 
					        // 微信小程序 登录页面 随便看看
 | 
				
			||||||
 | 
					        if (Objects.isNull(code)) {
 | 
				
			||||||
 | 
					            return Res.error("参数错误");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String jsonString = weChatTokenService.getOpenIdFromApi(code);
 | 
				
			||||||
 | 
					        JSONObject jsonObject = JSONObject.parseObject(jsonString);
 | 
				
			||||||
 | 
					        String openId = jsonObject.getString("data");
 | 
				
			||||||
 | 
					        if (Objects.isNull(openId) || "".equals(openId)) {
 | 
				
			||||||
 | 
					            return Res.error("微信接口异常,请重试");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        User user = userService.getUserByWxcode(openId);
 | 
				
			||||||
 | 
					        if (user == null) {
 | 
				
			||||||
 | 
					            // 创建一个新用户
 | 
				
			||||||
 | 
					            user = new User();
 | 
				
			||||||
 | 
					            user.setId(null);
 | 
				
			||||||
 | 
					            user.setUsername(UUID.randomUUID().toString().replace("-", "").substring(0, 10));
 | 
				
			||||||
 | 
					            user.setPassword(UUID.randomUUID().toString());
 | 
				
			||||||
 | 
					            user.setRealname("微信用户" + user.getUsername().substring(0, 5));
 | 
				
			||||||
 | 
					            user.setRoleId(3);
 | 
				
			||||||
 | 
					            user.setPermission("1");
 | 
				
			||||||
 | 
					            user.setWxcode(openId);
 | 
				
			||||||
 | 
					            userService.addUser(user);
 | 
				
			||||||
 | 
					            // 添加之后 user.getId() 可以获取到用户id
 | 
				
			||||||
 | 
					            // System.out.println("userId: " + user.getId());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 完成登录
 | 
				
			||||||
 | 
					        HashMap<String, Object> map = new HashMap<>();
 | 
				
			||||||
 | 
					        map.put("userInfo", UserVO.convertFrom(user));
 | 
				
			||||||
 | 
					        return Res.success(map);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 通过用户ID获取用户信息
 | 
					     * 通过用户ID获取用户信息
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,8 @@ public interface UserDao {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    User getUserByUsername(String username);
 | 
					    User getUserByUsername(String username);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    User getUserByWxcode(String wxcode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public List<User> getUserList(UserVO userVO);
 | 
					    public List<User> getUserList(UserVO userVO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean deleteUserById(Integer userId);
 | 
					    public boolean deleteUserById(Integer userId);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					package com.cxyxiaomo.epp.user.rpc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.cloud.openfeign.FeignClient;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.GetMapping;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestParam;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@FeignClient("microservice-provider-access")
 | 
				
			||||||
 | 
					public interface WeChatTokenServiceFeign {
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 返回值、参数要对应,方法名随意
 | 
				
			||||||
 | 
					     * 在 OpenFeign 中方法参数前如果没有注解,默认添加 @RequestBody 注解,最多只能存在一个不带注解的参数
 | 
				
			||||||
 | 
					     * 普通表单参数必须添加 @Requestparam 注解。如果变量名和参数名称对应可以不写name
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @GetMapping("/access/wechat/rpc/getOpenIdFromApi")
 | 
				
			||||||
 | 
					    String getOpenIdFromApi(@RequestParam("code") String code);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -18,6 +18,10 @@ public class UserService {
 | 
				
			|||||||
        return userDao.getUserByUsername(username);
 | 
					        return userDao.getUserByUsername(username);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public User getUserByWxcode(String wxcode) {
 | 
				
			||||||
 | 
					        return userDao.getUserByWxcode(wxcode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public User getUserById(Integer id) {
 | 
					    public User getUserById(Integer id) {
 | 
				
			||||||
        return userDao.getUserById(id);
 | 
					        return userDao.getUserById(id);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,11 +3,11 @@
 | 
				
			|||||||
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 | 
					        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 | 
				
			||||||
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 | 
					        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 | 
				
			||||||
<mapper namespace="com.cxyxiaomo.epp.user.dao.UserDao">
 | 
					<mapper namespace="com.cxyxiaomo.epp.user.dao.UserDao">
 | 
				
			||||||
    <insert id="addUser" parameterType="com.cxyxiaomo.epp.common.pojo.User">
 | 
					    <insert id="addUser" parameterType="com.cxyxiaomo.epp.common.pojo.User" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 | 
				
			||||||
        INSERT INTO user (username, `password`, realname, id_number, phone_number, role_id, building_id, doorplate,
 | 
					        INSERT INTO user (username, `password`, realname, id_number, phone_number, role_id, building_id, doorplate,
 | 
				
			||||||
                          permission, permission_time)
 | 
					                          permission, permission_time, wx_code)
 | 
				
			||||||
        VALUES (#{username}, #{password}, #{realname}, #{idNumber}, #{phoneNumber}, #{roleId}, #{buildingId},
 | 
					        VALUES (#{username}, #{password}, #{realname}, #{idNumber}, #{phoneNumber}, #{roleId}, #{buildingId},
 | 
				
			||||||
                #{doorplate}, #{permission}, #{permissionTime})
 | 
					                #{doorplate}, #{permission}, #{permissionTime}, #{wxcode})
 | 
				
			||||||
    </insert>
 | 
					    </insert>
 | 
				
			||||||
    <update id="updateUser" parameterType="com.cxyxiaomo.epp.common.pojo.User">
 | 
					    <update id="updateUser" parameterType="com.cxyxiaomo.epp.common.pojo.User">
 | 
				
			||||||
        UPDATE user
 | 
					        UPDATE user
 | 
				
			||||||
@@ -42,6 +42,9 @@
 | 
				
			|||||||
            <if test="permissionTime != null">
 | 
					            <if test="permissionTime != null">
 | 
				
			||||||
                permission_time = #{permissionTime},
 | 
					                permission_time = #{permissionTime},
 | 
				
			||||||
            </if>
 | 
					            </if>
 | 
				
			||||||
 | 
					            <if test="wxcode != null and wxcode != ''">
 | 
				
			||||||
 | 
					                wx_code = #{doorplate},
 | 
				
			||||||
 | 
					            </if>
 | 
				
			||||||
        </set>
 | 
					        </set>
 | 
				
			||||||
        WHERE id = #{id}
 | 
					        WHERE id = #{id}
 | 
				
			||||||
    </update>
 | 
					    </update>
 | 
				
			||||||
@@ -55,6 +58,11 @@
 | 
				
			|||||||
        from user
 | 
					        from user
 | 
				
			||||||
        where username = #{username}
 | 
					        where username = #{username}
 | 
				
			||||||
    </select>
 | 
					    </select>
 | 
				
			||||||
 | 
					    <select id="getUserByWxcode" resultType="com.cxyxiaomo.epp.common.pojo.User">
 | 
				
			||||||
 | 
					        select *
 | 
				
			||||||
 | 
					        from user
 | 
				
			||||||
 | 
					        where wx_code = #{wxcode}
 | 
				
			||||||
 | 
					    </select>
 | 
				
			||||||
    <select id="getUserList" resultType="com.cxyxiaomo.epp.common.pojo.User">
 | 
					    <select id="getUserList" resultType="com.cxyxiaomo.epp.common.pojo.User">
 | 
				
			||||||
        select *
 | 
					        select *
 | 
				
			||||||
        from user
 | 
					        from user
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1001
									
								
								database/epp.sql
									
									
									
									
									
								
							
							
						
						
									
										1001
									
								
								database/epp.sql
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -460,12 +460,40 @@
 | 
				
			|||||||
					"response": []
 | 
										"response": []
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					"name": "[线上] 小程序端 获取大门详情",
 | 
										"name": "[微服务] 小程序端 获取大门详情",
 | 
				
			||||||
					"request": {
 | 
										"request": {
 | 
				
			||||||
						"method": "GET",
 | 
											"method": "GET",
 | 
				
			||||||
						"header": [],
 | 
											"header": [],
 | 
				
			||||||
						"url": {
 | 
											"url": {
 | 
				
			||||||
							"raw": "https://epp.only4.work/guard-client/getGateList",
 | 
												"raw": "http://localhost:8002/access/gate/miniprogram/detail?id=261758638368624873480",
 | 
				
			||||||
 | 
												"protocol": "http",
 | 
				
			||||||
 | 
												"host": [
 | 
				
			||||||
 | 
													"localhost"
 | 
				
			||||||
 | 
												],
 | 
				
			||||||
 | 
												"port": "8002",
 | 
				
			||||||
 | 
												"path": [
 | 
				
			||||||
 | 
													"access",
 | 
				
			||||||
 | 
													"gate",
 | 
				
			||||||
 | 
													"miniprogram",
 | 
				
			||||||
 | 
													"detail"
 | 
				
			||||||
 | 
												],
 | 
				
			||||||
 | 
												"query": [
 | 
				
			||||||
 | 
													{
 | 
				
			||||||
 | 
														"key": "id",
 | 
				
			||||||
 | 
														"value": "261758638368624873480"
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												]
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"response": []
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"name": "[线上] 小程序端 获取大门详情 Copy",
 | 
				
			||||||
 | 
										"request": {
 | 
				
			||||||
 | 
											"method": "GET",
 | 
				
			||||||
 | 
											"header": [],
 | 
				
			||||||
 | 
											"url": {
 | 
				
			||||||
 | 
												"raw": "https://epp.only4.work/access/gate/miniprogram/detail?id=261758638368624873480",
 | 
				
			||||||
							"protocol": "https",
 | 
												"protocol": "https",
 | 
				
			||||||
							"host": [
 | 
												"host": [
 | 
				
			||||||
								"epp",
 | 
													"epp",
 | 
				
			||||||
@@ -473,8 +501,44 @@
 | 
				
			|||||||
								"work"
 | 
													"work"
 | 
				
			||||||
							],
 | 
												],
 | 
				
			||||||
							"path": [
 | 
												"path": [
 | 
				
			||||||
								"guard-client",
 | 
													"access",
 | 
				
			||||||
								"getGateList"
 | 
													"gate",
 | 
				
			||||||
 | 
													"miniprogram",
 | 
				
			||||||
 | 
													"detail"
 | 
				
			||||||
 | 
												],
 | 
				
			||||||
 | 
												"query": [
 | 
				
			||||||
 | 
													{
 | 
				
			||||||
 | 
														"key": "id",
 | 
				
			||||||
 | 
														"value": "261758638368624873480"
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												]
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"response": []
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"name": "[微服务RPC] 微信小程序登录获取openId",
 | 
				
			||||||
 | 
										"request": {
 | 
				
			||||||
 | 
											"method": "GET",
 | 
				
			||||||
 | 
											"header": [],
 | 
				
			||||||
 | 
											"url": {
 | 
				
			||||||
 | 
												"raw": "http://localhost:8002/access/wechat/rpc/getOpenIdFromApi?code=0f1meZZv3MRot03quH3w3Xnp744meZZu",
 | 
				
			||||||
 | 
												"protocol": "http",
 | 
				
			||||||
 | 
												"host": [
 | 
				
			||||||
 | 
													"localhost"
 | 
				
			||||||
 | 
												],
 | 
				
			||||||
 | 
												"port": "8002",
 | 
				
			||||||
 | 
												"path": [
 | 
				
			||||||
 | 
													"access",
 | 
				
			||||||
 | 
													"wechat",
 | 
				
			||||||
 | 
													"rpc",
 | 
				
			||||||
 | 
													"getOpenIdFromApi"
 | 
				
			||||||
 | 
												],
 | 
				
			||||||
 | 
												"query": [
 | 
				
			||||||
 | 
													{
 | 
				
			||||||
 | 
														"key": "code",
 | 
				
			||||||
 | 
														"value": "0f1meZZv3MRot03quH3w3Xnp744meZZu"
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
							]
 | 
												]
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,20 +1,27 @@
 | 
				
			|||||||
// app.js
 | 
					// app.js
 | 
				
			||||||
App({
 | 
					 | 
				
			||||||
  onLaunch() {
 | 
					 | 
				
			||||||
    // 展示本地存储能力
 | 
					 | 
				
			||||||
    const logs = wx.getStorageSync('logs') || []
 | 
					 | 
				
			||||||
    logs.unshift(Date.now())
 | 
					 | 
				
			||||||
    wx.setStorageSync('logs', logs)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 登录
 | 
					const toggleCustomTabBar = require('./custom-tab-bar/toggleCustomTabBar')
 | 
				
			||||||
    wx.login({
 | 
					
 | 
				
			||||||
      success: res => {
 | 
					App({
 | 
				
			||||||
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
 | 
					  async onLaunch() {
 | 
				
			||||||
      }
 | 
					
 | 
				
			||||||
    })
 | 
					    // 获取下拉框信息
 | 
				
			||||||
 | 
					    toggleCustomTabBar.updateConfig(this.globalData.baseUrl)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // // 展示本地存储能力
 | 
				
			||||||
 | 
					    // const logs = wx.getStorageSync('logs') || []
 | 
				
			||||||
 | 
					    // logs.unshift(Date.now())
 | 
				
			||||||
 | 
					    // wx.setStorageSync('logs', logs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // // 登录
 | 
				
			||||||
 | 
					    // wx.login({
 | 
				
			||||||
 | 
					    //   success: res => {
 | 
				
			||||||
 | 
					    //     // 发送 res.code 到后台换取 openId, sessionKey, unionId
 | 
				
			||||||
 | 
					    //   }
 | 
				
			||||||
 | 
					    // })
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  globalData: {
 | 
					  globalData: {
 | 
				
			||||||
    debugMode: true, // 是否展示调试内容
 | 
					    // debugMode: true, // 是否展示调试内容
 | 
				
			||||||
    baseUrl: true ? // Api 请求域名 不带最后的 /
 | 
					    baseUrl: true ? // Api 请求域名 不带最后的 /
 | 
				
			||||||
      "https://epp.only4.work" :
 | 
					      "https://epp.only4.work" :
 | 
				
			||||||
      "http://localhost",
 | 
					      "http://localhost",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,10 +19,11 @@
 | 
				
			|||||||
    "navigationBarTextStyle": "white"
 | 
					    "navigationBarTextStyle": "white"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "tabBar": {
 | 
					  "tabBar": {
 | 
				
			||||||
    "custom": false,
 | 
					    "custom": true,
 | 
				
			||||||
    "color": "#000000",
 | 
					    "————custom": false,
 | 
				
			||||||
    "backgroundColor": "#fff",
 | 
					    "————color": "#000000",
 | 
				
			||||||
    "selectedColor": "#FF8966",
 | 
					    "————backgroundColor": "#fff",
 | 
				
			||||||
 | 
					    "————selectedColor": "#FF8966",
 | 
				
			||||||
    "list": [
 | 
					    "list": [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "pagePath": "pages/index/index",
 | 
					        "pagePath": "pages/index/index",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										55
									
								
								weixin-miniprogram/custom-tab-bar/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								weixin-miniprogram/custom-tab-bar/index.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					Component({
 | 
				
			||||||
 | 
					  data: {
 | 
				
			||||||
 | 
					    selected: 0,
 | 
				
			||||||
 | 
					    color: "#000000",
 | 
				
			||||||
 | 
					    selectedColor: "#FF8966",
 | 
				
			||||||
 | 
					    list: null, // 在 toggleCustomTabBar.js 中动态设置下面的菜单项
 | 
				
			||||||
 | 
					    rawList: [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "pagePath": "pages/index/index",
 | 
				
			||||||
 | 
					        "text": "首页",
 | 
				
			||||||
 | 
					        "iconPath": "image/icon/_home.png",
 | 
				
			||||||
 | 
					        "selectedIconPath": "image/icon/home.png"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "pagePath": "pages/residents/code",
 | 
				
			||||||
 | 
					        "text": "进出码",
 | 
				
			||||||
 | 
					        "iconPath": "image/icon/_code.png",
 | 
				
			||||||
 | 
					        "selectedIconPath": "image/icon/code.png"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "pagePath": "pages/residents/report",
 | 
				
			||||||
 | 
					        "text": "体温上报",
 | 
				
			||||||
 | 
					        "iconPath": "image/icon/_report.png",
 | 
				
			||||||
 | 
					        "selectedIconPath": "image/icon/report.png"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "pagePath": "pages/shop/shop",
 | 
				
			||||||
 | 
					        "text": "生活物资",
 | 
				
			||||||
 | 
					        "iconPath": "image/icon/_shopping.png",
 | 
				
			||||||
 | 
					        "selectedIconPath": "image/icon/shopping.png"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "pagePath": "pages/person/person",
 | 
				
			||||||
 | 
					        "text": "我",
 | 
				
			||||||
 | 
					        "iconPath": "image/icon/_person.png",
 | 
				
			||||||
 | 
					        "selectedIconPath": "image/icon/person.png"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onShow() {
 | 
				
			||||||
 | 
					    console.log("[CustomTabBar] onLoad")
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  attached() {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  methods: {
 | 
				
			||||||
 | 
					    switchTab(e) {
 | 
				
			||||||
 | 
					      const data = e.currentTarget.dataset
 | 
				
			||||||
 | 
					      const url = '/' + data.path
 | 
				
			||||||
 | 
					      wx.switchTab({ url })
 | 
				
			||||||
 | 
					      this.setData({
 | 
				
			||||||
 | 
					        selected: data.index
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
							
								
								
									
										4
									
								
								weixin-miniprogram/custom-tab-bar/index.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								weixin-miniprogram/custom-tab-bar/index.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "component": true,
 | 
				
			||||||
 | 
					  "usingComponents": {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								weixin-miniprogram/custom-tab-bar/index.wxml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								weixin-miniprogram/custom-tab-bar/index.wxml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<!--miniprogram/custom-tab-bar/index.wxml-->
 | 
				
			||||||
 | 
					<cover-view class="tab-bar">
 | 
				
			||||||
 | 
					  <cover-view class="tab-bar-border"></cover-view>
 | 
				
			||||||
 | 
					  <cover-view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
 | 
				
			||||||
 | 
					    <cover-image src="../{{selected === index ? item.selectedIconPath : item.iconPath}}"></cover-image>
 | 
				
			||||||
 | 
					    <cover-view style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</cover-view>
 | 
				
			||||||
 | 
					  </cover-view>
 | 
				
			||||||
 | 
					</cover-view>
 | 
				
			||||||
							
								
								
									
										38
									
								
								weixin-miniprogram/custom-tab-bar/index.wxss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								weixin-miniprogram/custom-tab-bar/index.wxss
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					.tab-bar {
 | 
				
			||||||
 | 
					  position: fixed;
 | 
				
			||||||
 | 
					  bottom: 0;
 | 
				
			||||||
 | 
					  left: 0;
 | 
				
			||||||
 | 
					  right: 0;
 | 
				
			||||||
 | 
					  height: 48px;
 | 
				
			||||||
 | 
					  background: white;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  padding-bottom: env(safe-area-inset-bottom);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tab-bar-border {
 | 
				
			||||||
 | 
					  background-color: rgba(0, 0, 0, 0.33);
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  left: 0;
 | 
				
			||||||
 | 
					  top: 0;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 1px;
 | 
				
			||||||
 | 
					  transform: scaleY(0.5);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tab-bar-item {
 | 
				
			||||||
 | 
					  flex: 1;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  flex-direction: column;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tab-bar-item cover-image {
 | 
				
			||||||
 | 
					  width: 27px;
 | 
				
			||||||
 | 
					  height: 27px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tab-bar-item cover-view {
 | 
				
			||||||
 | 
					  font-size: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										97
									
								
								weixin-miniprogram/custom-tab-bar/toggleCustomTabBar.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								weixin-miniprogram/custom-tab-bar/toggleCustomTabBar.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
				
			|||||||
 | 
					var defaultTabbarItem = [
 | 
				
			||||||
 | 
					  "pages/person/person",
 | 
				
			||||||
 | 
					  "pages/residents/report",
 | 
				
			||||||
 | 
					  "pages/index/index"
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function toggle(that) {
 | 
				
			||||||
 | 
					  let pages = getCurrentPages()
 | 
				
			||||||
 | 
					  let route = pages[pages.length - 1].route
 | 
				
			||||||
 | 
					  console.log("[CustomTabBar] route", route)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!typeof that.getTabBar === 'function' || !that.getTabBar()) {
 | 
				
			||||||
 | 
					    // wx.showModal({
 | 
				
			||||||
 | 
					    //   title: '版本太旧',
 | 
				
			||||||
 | 
					    //   content: '您的微信版本太旧,无法使用本小程序',
 | 
				
			||||||
 | 
					    //   showCancel: false,
 | 
				
			||||||
 | 
					    //   complete: (res) => {
 | 
				
			||||||
 | 
					    //     wx.exitMiniProgram()
 | 
				
			||||||
 | 
					    //   }
 | 
				
			||||||
 | 
					    // })
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 找出要选择哪一项
 | 
				
			||||||
 | 
					  let tabBar = that.getTabBar()
 | 
				
			||||||
 | 
					  console.log("[CustomTabBar] tabBar", tabBar)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let data = tabBar.data
 | 
				
			||||||
 | 
					  console.log("[CustomTabBar] data", data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let showPagePathList = wx.getStorageSync('tabbarItem') || defaultTabbarItem
 | 
				
			||||||
 | 
					  console.log("[CustomTabBar] showPagePathList", showPagePathList)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let list = tabBar.data.rawList.filter((page) => showPagePathList.includes(page.pagePath))
 | 
				
			||||||
 | 
					  console.log("[CustomTabBar] tabBarList", list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let selected = list ? list.indexOf(list.find(p => p.pagePath == route)) : -1
 | 
				
			||||||
 | 
					  console.log("[CustomTabBar] selected", selected)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  console.log("更新tabbar")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 选中这一项
 | 
				
			||||||
 | 
					  tabBar.setData({
 | 
				
			||||||
 | 
					    selected: selected,
 | 
				
			||||||
 | 
					    list: list
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function updateConfig(baseUrl) {
 | 
				
			||||||
 | 
					  // 请求配置文件(用于审核时隐藏部分功能)
 | 
				
			||||||
 | 
					  wx.request({
 | 
				
			||||||
 | 
					    url: baseUrl + '/getConfig',
 | 
				
			||||||
 | 
					    success(result) {
 | 
				
			||||||
 | 
					      let data = result.data
 | 
				
			||||||
 | 
					      if (data.tabbarItem) {
 | 
				
			||||||
 | 
					        console.log("[CustomTabBar] tabbar数据拉取完毕")
 | 
				
			||||||
 | 
					        wx.setStorageSync('tabbarItem', data.tabbarItem)
 | 
				
			||||||
 | 
					        wx.setStorageSync('indexItem', data.indexItem)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const pages = getCurrentPages();
 | 
				
			||||||
 | 
					        const indexPage = pages[0]
 | 
				
			||||||
 | 
					        const currentPage = pages[pages.length - 1]
 | 
				
			||||||
 | 
					        console.log("[CustomTabBar] indexPage", indexPage)
 | 
				
			||||||
 | 
					        console.log("[CustomTabBar] currentPage", currentPage)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // // 更新tabbar
 | 
				
			||||||
 | 
					        // toggle(currentPage)
 | 
				
			||||||
 | 
					        // 刷新首页中包含了触发 toggle 的代码 此处不重复触发
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 刷新首页
 | 
				
			||||||
 | 
					        indexPage && indexPage.onLoad()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // let tabBar = currentPage.getTabBar()
 | 
				
			||||||
 | 
					        // tabBar.setData({
 | 
				
			||||||
 | 
					        //   list: tabBar.data.rawList.filter((page) => itemList.includes(page.pagePath))
 | 
				
			||||||
 | 
					        // })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    fail() {
 | 
				
			||||||
 | 
					      wx.showModal({
 | 
				
			||||||
 | 
					        title: '小程序启动失败',
 | 
				
			||||||
 | 
					        content: '点击确认重试,若多次失败请检查网络连接',
 | 
				
			||||||
 | 
					        complete: (res) => {
 | 
				
			||||||
 | 
					          if (res.cancel) {
 | 
				
			||||||
 | 
					            wx.exitMiniProgram()
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          if (res.confirm) {
 | 
				
			||||||
 | 
					            wx.reLaunch({
 | 
				
			||||||
 | 
					              url: 'pages/index/index',
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
// pages/index/index.js
 | 
					// pages/index/index.js
 | 
				
			||||||
const menuItemDict = require('../../utils/menuList.js')
 | 
					const menuItemDict = require('../../utils/menuList.js')
 | 
				
			||||||
const getUserGroupByRole = require('../../utils/getUserGroupByRole.js')
 | 
					const getUserGroupByRole = require('../../utils/getUserGroupByRole.js')
 | 
				
			||||||
 | 
					const toggleCustomTabBar = require('../../custom-tab-bar/toggleCustomTabBar')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import scanQRCode from '../../utils/scanQRCode'
 | 
					import scanQRCode from '../../utils/scanQRCode'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -22,6 +23,7 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面加载
 | 
					   * 生命周期函数--监听页面加载
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onLoad(options) {
 | 
					  onLoad(options) {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
    console.log("index/index onLoad", options)
 | 
					    console.log("index/index onLoad", options)
 | 
				
			||||||
    // console.log("wx.getLaunchOptionsSync()", wx.getLaunchOptionsSync())
 | 
					    // console.log("wx.getLaunchOptionsSync()", wx.getLaunchOptionsSync())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -39,7 +41,7 @@ Page({
 | 
				
			|||||||
        debugText: JSON.stringify(options, null, 4),
 | 
					        debugText: JSON.stringify(options, null, 4),
 | 
				
			||||||
        userInfo: userInfo,
 | 
					        userInfo: userInfo,
 | 
				
			||||||
        userGroup: userGroup,
 | 
					        userGroup: userGroup,
 | 
				
			||||||
        displayUsername: userInfo?.username ?? "请登录",
 | 
					        displayUsername: userInfo ? (`${userInfo.realname} (${userInfo.username})`) : "请登录",
 | 
				
			||||||
        filterMenuItems: this.getFilterMenuItems(menuItemDict, userGroup)
 | 
					        filterMenuItems: this.getFilterMenuItems(menuItemDict, userGroup)
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
      console.log("menuItemDict", menuItemDict)
 | 
					      console.log("menuItemDict", menuItemDict)
 | 
				
			||||||
@@ -82,6 +84,7 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面显示
 | 
					   * 生命周期函数--监听页面显示
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onShow() {
 | 
					  onShow() {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
    console.log("index/index onShow")
 | 
					    console.log("index/index onShow")
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -122,8 +125,21 @@ Page({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getFilterMenuItems(menuItemDict, userGroup) {
 | 
					  getFilterMenuItems(menuItemDict, userGroup) {
 | 
				
			||||||
    return Object.values(menuItemDict)
 | 
					    let filterMenuItems = Object.values(menuItemDict)
 | 
				
			||||||
      .filter((item) => item.for.indexOf(userGroup) != -1)
 | 
					      .filter((item) => item.for.indexOf(userGroup) != -1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 动态控制显示隐藏
 | 
				
			||||||
 | 
					    let indexItem = wx.getStorageSync('indexItem') || [
 | 
				
			||||||
 | 
					      "/pages/index/login",
 | 
				
			||||||
 | 
					      "/pages/person/person"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					    filterMenuItems = filterMenuItems
 | 
				
			||||||
 | 
					      .filter((item) => {
 | 
				
			||||||
 | 
					        let a = indexItem.includes(item.url)
 | 
				
			||||||
 | 
					        console.log("filterMenuItems -> filter", item.url, indexItem)
 | 
				
			||||||
 | 
					        return a
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    return filterMenuItems
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,11 +15,11 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面加载
 | 
					   * 生命周期函数--监听页面加载
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onLoad(options) {
 | 
					  onLoad(options) {
 | 
				
			||||||
    if (app.globalData.debugMode) {
 | 
					    // if (app.globalData.debugMode) {
 | 
				
			||||||
      this.setData({
 | 
					    //   this.setData({
 | 
				
			||||||
        debugMode: true,
 | 
					    //     debugMode: true,
 | 
				
			||||||
      })
 | 
					    //   })
 | 
				
			||||||
    }
 | 
					    // }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
@@ -81,12 +81,54 @@ Page({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  fastLogin() {
 | 
					  fastLogin() {
 | 
				
			||||||
    this.setData({
 | 
					    this.setData({
 | 
				
			||||||
      username: "user",
 | 
					      username: "#fastLogin#",
 | 
				
			||||||
      password: "user",
 | 
					      password: "#fastLogin#",
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    this.login()
 | 
					    this.login()
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  wxLogin() {
 | 
				
			||||||
 | 
					    var that = this
 | 
				
			||||||
 | 
					    wx.login({
 | 
				
			||||||
 | 
					      success(res) {
 | 
				
			||||||
 | 
					        if (res.code) {
 | 
				
			||||||
 | 
					          wx.showLoading({
 | 
				
			||||||
 | 
					            title: '加载中'
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					          wx.request({
 | 
				
			||||||
 | 
					            url: app.globalData.baseUrl + '/user/wxlogin',
 | 
				
			||||||
 | 
					            method: "POST",
 | 
				
			||||||
 | 
					            header: {
 | 
				
			||||||
 | 
					              "Content-Type": "application/x-www-form-urlencoded" //用于post
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            data: {
 | 
				
			||||||
 | 
					              code: res.code
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            success: function (d) {
 | 
				
			||||||
 | 
					              wx.hideLoading()
 | 
				
			||||||
 | 
					              that._loginSuccessCallback(d)
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            fail: function () {
 | 
				
			||||||
 | 
					              wx.hideLoading()
 | 
				
			||||||
 | 
					              wx.showToast({
 | 
				
			||||||
 | 
					                title: "请求失败",
 | 
				
			||||||
 | 
					                icon: 'error',
 | 
				
			||||||
 | 
					                duration: 2000
 | 
				
			||||||
 | 
					              })
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          console.log('登录失败!' + res.errMsg)
 | 
				
			||||||
 | 
					          wx.showModal({
 | 
				
			||||||
 | 
					            title: '登录失败',
 | 
				
			||||||
 | 
					            content: '您点击了取消按钮' + res.errMsg,
 | 
				
			||||||
 | 
					            showCancel: false
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  login() {
 | 
					  login() {
 | 
				
			||||||
    console.log("login userInput", this.data.username, this.data.password)
 | 
					    console.log("login userInput", this.data.username, this.data.password)
 | 
				
			||||||
    if (!this.data.username || !this.data.password) {
 | 
					    if (!this.data.username || !this.data.password) {
 | 
				
			||||||
@@ -96,6 +138,7 @@ Page({
 | 
				
			|||||||
        duration: 2000
 | 
					        duration: 2000
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
 | 
					      var that = this
 | 
				
			||||||
      wx.showLoading({
 | 
					      wx.showLoading({
 | 
				
			||||||
        title: '加载中'
 | 
					        title: '加载中'
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
@@ -111,32 +154,7 @@ Page({
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        success: function (d) {
 | 
					        success: function (d) {
 | 
				
			||||||
          wx.hideLoading()
 | 
					          wx.hideLoading()
 | 
				
			||||||
          let result = d.data;
 | 
					          that._loginSuccessCallback(d)
 | 
				
			||||||
          if (result.success) {
 | 
					 | 
				
			||||||
            // 登录成功
 | 
					 | 
				
			||||||
            if (![3, 4, 5, 6].includes(result.data.userInfo.roleId)) {
 | 
					 | 
				
			||||||
              wx.showModal({
 | 
					 | 
				
			||||||
                title: '你不是社区居民',
 | 
					 | 
				
			||||||
                content: '管理员请前往网页版登录',
 | 
					 | 
				
			||||||
                showCancel: false,
 | 
					 | 
				
			||||||
                complete: (res) => {
 | 
					 | 
				
			||||||
                  //
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
              })
 | 
					 | 
				
			||||||
              return
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            wx.setStorageSync("userInfo", result.data.userInfo);
 | 
					 | 
				
			||||||
            console.log("userInfo", wx.getStorageSync("userInfo"))
 | 
					 | 
				
			||||||
            wx.switchTab({
 | 
					 | 
				
			||||||
              url: '/pages/index/index'
 | 
					 | 
				
			||||||
            })
 | 
					 | 
				
			||||||
          } else {
 | 
					 | 
				
			||||||
            wx.showToast({
 | 
					 | 
				
			||||||
              title: result.msg,
 | 
					 | 
				
			||||||
              icon: 'error',
 | 
					 | 
				
			||||||
              duration: 2000
 | 
					 | 
				
			||||||
            })
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        fail: function () {
 | 
					        fail: function () {
 | 
				
			||||||
          wx.hideLoading()
 | 
					          wx.hideLoading()
 | 
				
			||||||
@@ -148,5 +166,34 @@ Page({
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  _loginSuccessCallback(d) {
 | 
				
			||||||
 | 
					    let result = d.data;
 | 
				
			||||||
 | 
					    if (result.success) {
 | 
				
			||||||
 | 
					      // 登录成功
 | 
				
			||||||
 | 
					      if (![3, 4, 5, 6].includes(result.data.userInfo.roleId)) {
 | 
				
			||||||
 | 
					        wx.showModal({
 | 
				
			||||||
 | 
					          title: '你不是社区居民',
 | 
				
			||||||
 | 
					          content: '管理员请前往网页版登录',
 | 
				
			||||||
 | 
					          showCancel: false,
 | 
				
			||||||
 | 
					          complete: (res) => {
 | 
				
			||||||
 | 
					            //
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      wx.setStorageSync("userInfo", result.data.userInfo);
 | 
				
			||||||
 | 
					      console.log("userInfo", wx.getStorageSync("userInfo"))
 | 
				
			||||||
 | 
					      wx.switchTab({
 | 
				
			||||||
 | 
					        url: '/pages/index/index'
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      wx.showToast({
 | 
				
			||||||
 | 
					        title: result.msg,
 | 
				
			||||||
 | 
					        icon: 'error',
 | 
				
			||||||
 | 
					        duration: 2000
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,9 +12,11 @@
 | 
				
			|||||||
    </view>
 | 
					    </view>
 | 
				
			||||||
    <view class="loginBtnView">
 | 
					    <view class="loginBtnView">
 | 
				
			||||||
      <!--按钮-->
 | 
					      <!--按钮-->
 | 
				
			||||||
      <button wx:if="{{debugMode}}" class="loginBtn" type="warn" bindtap="fastLogin">DEBUG快速登录user</button>
 | 
					      <!-- <button wx:if="{{debugMode}}" class="loginBtn" type="warn" bindtap="fastLogin">DEBUG快速登录user</button> -->
 | 
				
			||||||
      <button class="loginBtn" type="primary" bindtap="login">登录</button>
 | 
					      <button class="loginBtn" type="primary" bindtap="login">密码登录</button>
 | 
				
			||||||
      <button class="loginBtn" type="secondary" bindtap="visitor">访客申请</button>
 | 
					      <!-- <button class="loginBtn" type="secondary" bindtap="visitor">访客申请</button> -->
 | 
				
			||||||
 | 
					      <button class="loginBtn" type="primary" bindtap="wxLogin">微信登录/注册</button>
 | 
				
			||||||
 | 
					      <button class="loginBtn" type="secondary" bindtap="fastLogin">随便看看</button>
 | 
				
			||||||
    </view>
 | 
					    </view>
 | 
				
			||||||
  </view>
 | 
					  </view>
 | 
				
			||||||
</view>
 | 
					</view>
 | 
				
			||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
// pages/person/person.js
 | 
					// pages/person/person.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const toggleCustomTabBar = require('../../custom-tab-bar/toggleCustomTabBar')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const {
 | 
					const {
 | 
				
			||||||
  user
 | 
					  user
 | 
				
			||||||
} = require("../../utils/const")
 | 
					} = require("../../utils/const")
 | 
				
			||||||
@@ -16,7 +18,8 @@ Page({
 | 
				
			|||||||
    avatarUrl: defaultAvatarUrl,
 | 
					    avatarUrl: defaultAvatarUrl,
 | 
				
			||||||
    nickName: "请登录",
 | 
					    nickName: "请登录",
 | 
				
			||||||
    displayUserId: "",
 | 
					    displayUserId: "",
 | 
				
			||||||
    menuList: [
 | 
					    menuList: [],
 | 
				
			||||||
 | 
					    menuListRaw: [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        id: "myOrder",
 | 
					        id: "myOrder",
 | 
				
			||||||
        title: "我的订单",
 | 
					        title: "我的订单",
 | 
				
			||||||
@@ -26,14 +29,14 @@ Page({
 | 
				
			|||||||
        color: 'red',
 | 
					        color: 'red',
 | 
				
			||||||
        title: "退出登录",
 | 
					        title: "退出登录",
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ]
 | 
					    ],
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * 生命周期函数--监听页面加载
 | 
					   * 生命周期函数--监听页面加载
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onLoad(options) {
 | 
					  onLoad(options) {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
@@ -47,6 +50,20 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面显示
 | 
					   * 生命周期函数--监听页面显示
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onShow() {
 | 
					  onShow() {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 是否隐藏 我的订单
 | 
				
			||||||
 | 
					    let arr = wx.getStorageSync("indexItem")
 | 
				
			||||||
 | 
					    if (!arr || !arr.includes("/pages/shop/shop")) {
 | 
				
			||||||
 | 
					      this.setData({
 | 
				
			||||||
 | 
					        menuList: this.data.menuListRaw.filter(i => i.id != 'myOrder')
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      this.setData({
 | 
				
			||||||
 | 
					        menuList: this.data.menuListRaw
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let userInfo = wx.getStorageSync("userInfo")
 | 
					    let userInfo = wx.getStorageSync("userInfo")
 | 
				
			||||||
    if (!userInfo) {
 | 
					    if (!userInfo) {
 | 
				
			||||||
      console.log("用户未登录")
 | 
					      console.log("用户未登录")
 | 
				
			||||||
@@ -109,7 +126,6 @@ Page({
 | 
				
			|||||||
    console.log("e", userInfo)
 | 
					    console.log("e", userInfo)
 | 
				
			||||||
    this.setData({
 | 
					    this.setData({
 | 
				
			||||||
      avatarUrl: userInfo.avatarUrl,
 | 
					      avatarUrl: userInfo.avatarUrl,
 | 
				
			||||||
 | 
					 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ import utils from '../../utils/util'
 | 
				
			|||||||
// import drawQrcode from '../../utils/qrcode/index'
 | 
					// import drawQrcode from '../../utils/qrcode/index'
 | 
				
			||||||
import drawQrcode from '../../utils/lib/weapp.qrcode.esm.js'
 | 
					import drawQrcode from '../../utils/lib/weapp.qrcode.esm.js'
 | 
				
			||||||
import scanQRCode from '../../utils/scanQRCode'
 | 
					import scanQRCode from '../../utils/scanQRCode'
 | 
				
			||||||
 | 
					const toggleCustomTabBar = require('../../custom-tab-bar/toggleCustomTabBar')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const app = getApp();
 | 
					const app = getApp();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -25,7 +26,7 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面加载
 | 
					   * 生命周期函数--监听页面加载
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onLoad(options) {
 | 
					  onLoad(options) {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
@@ -39,6 +40,7 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面显示
 | 
					   * 生命周期函数--监听页面显示
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onShow() {
 | 
					  onShow() {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
    console.log('onShow')
 | 
					    console.log('onShow')
 | 
				
			||||||
    // setTimeout(this.refershData, 100)
 | 
					    // setTimeout(this.refershData, 100)
 | 
				
			||||||
    this.refershData()
 | 
					    this.refershData()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,8 @@
 | 
				
			|||||||
// pages/residents/report.js
 | 
					// pages/residents/report.js
 | 
				
			||||||
import utils from '../../utils/util'
 | 
					import utils from '../../utils/util'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const toggleCustomTabBar = require('../../custom-tab-bar/toggleCustomTabBar')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const app = getApp();
 | 
					const app = getApp();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Page({
 | 
					Page({
 | 
				
			||||||
@@ -32,6 +34,7 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面加载
 | 
					   * 生命周期函数--监听页面加载
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onLoad(options) {
 | 
					  onLoad(options) {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
    console.log("residents/report onLoad")
 | 
					    console.log("residents/report onLoad")
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -46,6 +49,7 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面显示
 | 
					   * 生命周期函数--监听页面显示
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onShow() {
 | 
					  onShow() {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
    console.log("residents/report onShow")
 | 
					    console.log("residents/report onShow")
 | 
				
			||||||
    if (this.data.isSkipOnShowFunc) {
 | 
					    if (this.data.isSkipOnShowFunc) {
 | 
				
			||||||
      this.setData({
 | 
					      this.setData({
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
// pages/shop/shop.js
 | 
					// pages/shop/shop.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const toggleCustomTabBar = require('../../custom-tab-bar/toggleCustomTabBar')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const goodService = require("../../services/good")
 | 
					const goodService = require("../../services/good")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Page({
 | 
					Page({
 | 
				
			||||||
@@ -62,6 +64,7 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面加载
 | 
					   * 生命周期函数--监听页面加载
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onLoad(options) {
 | 
					  onLoad(options) {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
    this.loadPageData();
 | 
					    this.loadPageData();
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,7 +79,7 @@ Page({
 | 
				
			|||||||
   * 生命周期函数--监听页面显示
 | 
					   * 生命周期函数--监听页面显示
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  onShow() {
 | 
					  onShow() {
 | 
				
			||||||
 | 
					    toggleCustomTabBar.toggle(this)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
@@ -193,7 +196,7 @@ Page({
 | 
				
			|||||||
      })
 | 
					      })
 | 
				
			||||||
    })();
 | 
					    })();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    (async () => {
 | 
					    (async () => {
 | 
				
			||||||
      let goodCategoryListPromise = goodService.getGoodCategoryList()
 | 
					      let goodCategoryListPromise = goodService.getGoodCategoryList()
 | 
				
			||||||
      Promise.all([
 | 
					      Promise.all([
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,55 +39,55 @@ let menuItemDict = {
 | 
				
			|||||||
    switchFunc: switchTab,
 | 
					    switchFunc: switchTab,
 | 
				
			||||||
    url: '/pages/shop/shop'
 | 
					    url: '/pages/shop/shop'
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  'apply-record': {
 | 
					  // 'apply-record': {
 | 
				
			||||||
    for: ['visitor'],
 | 
					  //   for: ['visitor'],
 | 
				
			||||||
    title: "申请记录",
 | 
					  //   title: "申请记录",
 | 
				
			||||||
    image: "apply.png",
 | 
					  //   image: "apply.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  'apply-approval': {
 | 
					  // 'apply-approval': {
 | 
				
			||||||
    for: ['admin'],
 | 
					  //   for: ['admin'],
 | 
				
			||||||
    title: "申请审批",
 | 
					  //   title: "申请审批",
 | 
				
			||||||
    image: "apply.png", // ApplyReplay
 | 
					  //   image: "apply.png", // ApplyReplay
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  'visitor-apply': {
 | 
					  // 'visitor-apply': {
 | 
				
			||||||
    for: ['admin'],
 | 
					  //   for: ['admin'],
 | 
				
			||||||
    title: "访客审批",
 | 
					  //   title: "访客审批",
 | 
				
			||||||
    image: "visitor.png",
 | 
					  //   image: "visitor.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  'abnormal': {
 | 
					  // 'abnormal': {
 | 
				
			||||||
    for: ['admin'],
 | 
					  //   for: ['admin'],
 | 
				
			||||||
    title: "异常人员",
 | 
					  //   title: "异常人员",
 | 
				
			||||||
    image: "danger.png",
 | 
					  //   image: "danger.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  'feedback-submit': {
 | 
					  // 'feedback-submit': {
 | 
				
			||||||
    for: ['visitor'],
 | 
					  //   for: ['visitor'],
 | 
				
			||||||
    title: "提交反馈",
 | 
					  //   title: "提交反馈",
 | 
				
			||||||
    image: "fk.png",
 | 
					  //   image: "fk.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  'feedback-list': {
 | 
					  // 'feedback-list': {
 | 
				
			||||||
    for: ['visitor'],
 | 
					  //   for: ['visitor'],
 | 
				
			||||||
    title: "反馈查看",
 | 
					  //   title: "反馈查看",
 | 
				
			||||||
    image: "feedback.png",
 | 
					  //   image: "feedback.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  'feedback-reply': {
 | 
					  // 'feedback-reply': {
 | 
				
			||||||
    for: ['admin'],
 | 
					  //   for: ['admin'],
 | 
				
			||||||
    title: "反馈回复",
 | 
					  //   title: "反馈回复",
 | 
				
			||||||
    image: "feedback.png",
 | 
					  //   image: "feedback.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  'person': {
 | 
					  'person': {
 | 
				
			||||||
    for: ['admin', 'user'],
 | 
					    for: ['admin', 'user'],
 | 
				
			||||||
    title: "个人中心",
 | 
					    title: "个人中心",
 | 
				
			||||||
@@ -100,22 +100,22 @@ let menuItemDict = {
 | 
				
			|||||||
    title: "密码修改",
 | 
					    title: "密码修改",
 | 
				
			||||||
    image: "updPwd.png",
 | 
					    image: "updPwd.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					    switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					    url: '/pages/person/updpwd'
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  'assign': {
 | 
					  // 'assign': {
 | 
				
			||||||
    for: ['admin'],
 | 
					  //   for: ['admin'],
 | 
				
			||||||
    title: "分配账号",
 | 
					  //   title: "分配账号",
 | 
				
			||||||
    image: "count.png",
 | 
					  //   image: "count.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  'unfinish': {
 | 
					  // 'unfinish': {
 | 
				
			||||||
    for: ['admin'],
 | 
					  //   for: ['admin'],
 | 
				
			||||||
    title: "今日未填", // RedList
 | 
					  //   title: "今日未填", // RedList
 | 
				
			||||||
    image: "_report.png",
 | 
					  //   image: "_report.png",
 | 
				
			||||||
    switchFunc: switchTab,
 | 
					  //   switchFunc: switchTab,
 | 
				
			||||||
    url: ''
 | 
					  //   url: ''
 | 
				
			||||||
  }
 | 
					  // }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
let keys = Object.keys(menuItemDict);
 | 
					let keys = Object.keys(menuItemDict);
 | 
				
			||||||
for (let key of keys) {
 | 
					for (let key of keys) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user