huanghongfa
2021-05-12 4c93d581de8323667e08bcb00dac88762a49e183
Merge remote-tracking branch 'origin/test' into test
39个文件已修改
11个文件已添加
1243 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityQuestnaireApi.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ShopApi.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/java/com/panzhihua/applets_backstage/api/ShopApi.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/SecurityConstants.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComCvtBusinessDTO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComMngPopulationDTO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopSysConfDTO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopSysConfDTO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationVO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/EditComMngPopulationVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopHiddenConfVO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopSysConfVO.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/user/AdministratorsUserVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/user/UserElectronicFileVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityConvenientApi.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/VillageApi.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComMngVillageApi.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/NeighborApi.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ShopApi.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngCarDAO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopSysConfDAO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationDO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopOrderDO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopSysConfDO.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActNeighborCircleService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComMngPopulationService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComMngVillageService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopSysConfService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActNeighborCircleServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComCvtBusinessServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngVillageServiceImpl.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopSysConfServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/AppletWebSecurityConfigurationAdapter.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/RealNamedConfig.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/SpringSecurityConfig.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/AppletAuthenticationFilter.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java 389 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/resources/bootstrap.yml 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityQuestnaireApi.java
@@ -42,18 +42,16 @@
        pageQuestnaireDTO.setForParty(1 == isPartymember.intValue());
        pageQuestnaireDTO.setForVolunteer(1 == isVolunteer.intValue());
        pageQuestnaireDTO.setUserId(loginUserInfo.getUserId());
//        pageQuestnaireDTO.setState(0);
        return communityService.pageQuestnaire(pageQuestnaireDTO, loginUserInfo.getCommunityId());
    }
    @ApiOperation(value = "分页查询社区调查问卷", response = QuestnaireListVo.class)
    @PostMapping("/pageVolunteer")
    public R pageVolunteer(@RequestBody PageQuestnaireDTO pageQuestnaireDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        pageQuestnaireDTO.setForMasses(null);
        pageQuestnaireDTO.setForVolunteer(true);
        pageQuestnaireDTO.setForParty(true);
        return communityService.pageQuestnaire(pageQuestnaireDTO, loginUserInfo.getCommunityId());
        return communityService.pageQuestnaire(pageQuestnaireDTO, getLoginUserInfo().getCommunityId());
    }
    @ApiOperation(value = "创建调查问卷")
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ShopApi.java
@@ -1,5 +1,6 @@
package com.panzhihua.applets.api;
import com.alibaba.fastjson.JSONObject;
import com.panzhihua.applets.config.WxMaProperties;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.dtos.shop.*;
@@ -39,6 +40,14 @@
    @ApiOperation(value = "分页查询店铺" , response = PageShopStoreVO.class)
    @PostMapping("pageshopstore")
    public R pageShopStore(@RequestBody PageComShopStoreDTO comShopStoreDTO) {
        PageComShopSysConfDTO pageComShopSysConfDTO = new PageComShopSysConfDTO();
        R conf = communityService.pageShopSysConf(pageComShopSysConfDTO);
        if(R.isOk(conf)&& conf.getData()!=null){
            ComShopSysConfVO comShopSysConfVO = JSONObject.parseObject(JSONObject.toJSONString(conf.getData()), ComShopSysConfVO.class);
            if("1".equals(comShopSysConfVO.getVal()) && "1".equals(comShopSysConfVO.getEnabled())){
                return  R.ok();
            }
        }
        return communityService.pageShopStore(comShopStoreDTO);
    }
@@ -81,6 +90,14 @@
        if(userId == null){
            return R.fail("请重新登陆");
        }
        PageComShopSysConfDTO pageComShopSysConfDTO = new PageComShopSysConfDTO();
        R conf = communityService.pageShopSysConf(pageComShopSysConfDTO);
        if(R.isOk(conf)&& conf.getData()!=null){
            ComShopSysConfVO comShopSysConfVO = JSONObject.parseObject(JSONObject.toJSONString(conf.getData()), ComShopSysConfVO.class);
            if("1".equals(comShopSysConfVO.getVal()) && "1".equals(comShopSysConfVO.getEnabled())){
                return  R.ok(0);
            }
        }
        return communityService.shopCartUserTotal(userId);
    }
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java
@@ -6,6 +6,8 @@
import com.panzhihua.applets.model.dtos.ComPbMemberCertificationDTO;
import com.panzhihua.common.constants.UserConstants;
import com.panzhihua.common.model.dtos.shop.ExcelShopOrderDTO;
import com.panzhihua.common.constants.SecurityConstants;
import com.panzhihua.common.constants.UserConstants;
import com.panzhihua.common.model.dtos.user.SysUserEditTipsDTO;
import com.panzhihua.common.model.dtos.user.SysUserFeedbackDTO;
import com.panzhihua.common.model.vos.community.*;
@@ -52,6 +54,8 @@
    private PartyBuildingService partyBuildingService;
    @Resource
    private CheckService checkService;
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    @ApiOperation(value = "当前登录用户信息", response = LoginUserInfoVO.class)
    @GetMapping("info")
@@ -119,6 +123,11 @@
            if (R.isOk(r1)) {
                log.info("新增实名认证未通过通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
            }
            //清空缓存
            String userRoleKey = UserConstants.LOGIN_USER_INFO + this.getLoginUserInfo().getUserId();
            String userAppletRoleKey = SecurityConstants.ROLE_APPLETS_USER + this.getLoginUserInfo().getUserId();
            stringRedisTemplate.delete(userRoleKey);
            stringRedisTemplate.delete(userAppletRoleKey);
        } else {
            //未通过发通知
            /**
springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/java/com/panzhihua/applets_backstage/api/ShopApi.java
@@ -350,11 +350,27 @@
    }
    @ApiOperation(value = "配送完成")
    @PutMapping("/order/finishDeliver")
    public R finishDeliver(@RequestBody ComShopOrderDeliverDTO deliverDTO){
        deliverDTO.setOperUserAccount(getLoginUserInfo().getPhone());
        deliverDTO.setIsAdmin(true);
        return communityService.finishDeliverOrder(deliverDTO);
    @ApiOperation(value = "商家配置修改")
    @PutMapping("/shop/conf")
    public R editConf(@RequestBody ComShopSysConfDTO comShopSysConfDTO){
        return communityService.editShopSysConf(comShopSysConfDTO);
    }
    @ApiOperation(value = "商家配置查询", response = ComShopHiddenConfVO.class)
    @GetMapping("/shop/conf")
    public R getConf(){
        PageComShopSysConfDTO pageComShopSysConfDTO = new PageComShopSysConfDTO();
        R r = communityService.pageShopSysConf(pageComShopSysConfDTO);
        if(R.isOk(r) && r.getData()!=null){
            ComShopSysConfVO comShopSysConfVO = JSONObject.parseObject(JSONObject.toJSONString(r.getData()), ComShopSysConfVO.class);
            if(comShopSysConfVO!=null){
                ComShopHiddenConfVO comShopHiddenConfVO = new ComShopHiddenConfVO();
                comShopHiddenConfVO.setId(comShopSysConfVO.getId());
                comShopHiddenConfVO.setHidden(comShopSysConfVO.getVal());
                return R.ok(comShopHiddenConfVO);
            }
        }
        return r;
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/SecurityConstants.java
@@ -16,5 +16,6 @@
    public static final String APPLETS_ACCESS_MEDIA_ID ="APPLETS_ACCESS_MEDIA_ID";//小程序获取的access_token
    public static final String APPLETS_ACCESS_MEDIA_ID_TIME ="APPLETS_ACCESS_MEDIA_ID_TIME";//小程序获取的access_token
    public static final String ROLE_APPLETS_REAL_NAMED="applets:realnamed";//小程序用户实名角色
    public static final String ROLE_APPLETS_USER="applets:realnamed:user:";//小程序用户角色
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
@@ -178,9 +178,15 @@
                    vo.setWorkCompany(oneData.get(16));
                }
                if(oneData.get(17) != null){
                    vo.setRemark(oneData.get(17));
                    vo.setOutOrLocal(oneData.get(17));
                }
                for (int i = 18; i < headSize; i++) {
                if(oneData.get(18) != null){
                    vo.setCensusRegister(oneData.get(18));
                }
                if(oneData.get(19) != null){
                    vo.setRemark(oneData.get(19));
                }
                for (int i = 20; i < headSize; i++) {
                    if (oneData.get(i) != null && oneData.get(i).equals("是")) {
                        vo.getUserTagStr().add(headData.get(i).substring(0,headData.get(i).indexOf("(")));
                    }
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComCvtBusinessDTO.java
@@ -26,6 +26,7 @@
    @ApiModelProperty("商家名称")
    @NotBlank(groups = {AddGroup.class},message = "商家名称不能为空")
    @Length(groups = {AddGroup.class}, max = 35, message = "商家名称不能为空大于35个字")
    private String name;
    @ApiModelProperty("联系人")
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComMngPopulationDTO.java
@@ -90,6 +90,7 @@
     */
    @ApiModelProperty(value="年龄")
    private Integer age;
    /**
     * 身份证号码
     */
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopSysConfDTO.java
New file
@@ -0,0 +1,21 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClasssName ComShopSysConfDTO
 * @Description 商家配置信息
 * @Author cedoo
 * @Date 2021/05/11
 * @Version 1.0
 **/
@Data
@ApiModel("商家系统配置")
public class ComShopSysConfDTO {
    @ApiModelProperty(value = "id", required = true)
    private Long id;
    @ApiModelProperty(value = "是否隐藏所有商家 0 否  1是", required = true)
    private Integer hidden;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopSysConfDTO.java
New file
@@ -0,0 +1,19 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther llming
 * @describe 分页查询商品
 */
@ApiModel("分页查询商品")
@Data
public class PageComShopSysConfDTO {
    @ApiModelProperty(value = "分页-当前页数", example = "1", required = false)
    private Long pageNum = 1l;
    @ApiModelProperty(value = "分页-每页记录数", example = "10", required = false)
    private Long pageSize = 10l;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java
@@ -65,7 +65,13 @@
    @ExcelProperty(value = "工作单位", index = 16)
    private String workCompany;
    @ExcelProperty(value = "备注", index = 17)
    @ExcelProperty(value = "外地or本地", index = 17)
    private String outOrLocal;
    @ExcelProperty(value = "户口所在地", index = 18)
    private String censusRegister;
    @ExcelProperty(value = "备注", index = 19)
    private String remark;
    private Integer age;
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationVO.java
@@ -62,9 +62,11 @@
    @ApiModelProperty("身份证号码")
    @NotBlank(groups = {AddGroup.class},message = "身份证号码不可为空")
    @EncryptDecryptField
    @Sensitive(strategy = SensitiveStrategy.ID_CARD)
    private String cardNo;
    @ApiModelProperty("出生年月")
    private String birthday;
    @ApiModelProperty("街路巷")
    @NotBlank(groups = {AddGroup.class},message = "街路巷不可为空")
    private String road;
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/EditComMngPopulationVO.java
@@ -19,7 +19,7 @@
 * 实有人口Vo
 */
@Data
@ApiModel("实有人口表")
@ApiModel("实有人口编辑表")
@EncryptDecryptClass
public class EditComMngPopulationVO implements Serializable {
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopHiddenConfVO.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("订单创建返回参数")
public class ComShopHiddenConfVO {
    @ApiModelProperty(value = "id")
    private Long id;
    @ApiModelProperty(value = "是否隐藏所有商家 0 否  1是")
    private String hidden;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopSysConfVO.java
New file
@@ -0,0 +1,25 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ApiModel("订单创建返回参数")
public class ComShopSysConfVO {
    @ApiModelProperty(value = "id")
    private Long id;
    @ApiModelProperty(value = "配置名称")
    private String name;
    @ApiModelProperty(value = "配置备注")
    private String note;
    @ApiModelProperty(value = "配置值")
    private String val;
    @ApiModelProperty(value = "是否生效(0 否 1 是)")
    private String enabled;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/user/AdministratorsUserVO.java
@@ -79,4 +79,7 @@
    @ApiModelProperty(value = "商铺Id")
    private String shopStorePhone;
    @ApiModelProperty(value = "用户昵称")
    private String nickName;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/user/UserElectronicFileVO.java
@@ -11,7 +11,7 @@
    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id",hidden = true)
    @ApiModelProperty(value = "用户id")
    private Long userId;
    /**
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -29,11 +29,13 @@
import com.panzhihua.common.model.vos.shop.ShopOperLogVO;
import com.panzhihua.common.model.vos.shop.AddShopGoodsVO;
import com.panzhihua.common.model.vos.shop.ShopStoreVO;
import com.panzhihua.common.model.vos.user.UserElectronicFileVO;
import com.panzhihua.common.model.vos.user.UserPhoneVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
@@ -2427,4 +2429,36 @@
    @PostMapping("/neighbor/neighborCommentReplyByApp")
    R neighborCommentReplyByApp(@RequestBody ComActNeighborCommentReplyAppDTO commentReplyAppDTO);
    /**
     * 实有房屋_编辑
     * @param villageId 实有房屋id
     * @param comMngVillageVO 请求参数
     * @return
     */
    @PostMapping("/editvillage/{villageId}")
    R editvillage(@PathVariable("villageId") Long villageId,@RequestBody ComMngVillageVO comMngVillageVO);
    /**
     * 商城系统配置
     * @param comShopSysConfDTO
     * @return
     */
    @PostMapping("/shop/conf/edit")
    R editShopSysConf(@RequestBody ComShopSysConfDTO comShopSysConfDTO);
    /**
     * 商城系统配置查询
     * @param pageComShopSysConfDTO
     * @return
     */
    @PostMapping("/shop/conf/get")
    R pageShopSysConf(@RequestBody PageComShopSysConfDTO pageComShopSysConfDTO);
    /**
     * 编辑实有人口_电子档案
     * @param userElectronicFileVO
     * @return
     */
    @PostMapping("/common/data/population/edit/electronicArchives")
    R editUserElectronicFile(@RequestBody UserElectronicFileVO userElectronicFileVO);
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java
@@ -785,7 +785,8 @@
        return R.ok();
    }
    @ApiOperation(value = "实有人口编辑")
    @ApiOperation(value = "编辑实有人口")
    @PostMapping(value = "/population/edit")
    public R editPopulationInfo(@RequestBody EditComMngPopulationVO editComMngPopulationVO){
        LoginUserInfoVO loginUserInfo = getLoginUserInfo();
@@ -936,7 +937,11 @@
        List<String> head17 = new ArrayList<String>();
        head17.add("工作单位");
        List<String> head18 = new ArrayList<String>();
        head18.add("备注");
        head18.add("本地/外地");
        List<String> head19 = new ArrayList<String>();
        head19.add("户口所在地");
        List<String> head20 = new ArrayList<String>();
        head20.add("备注");
        list.add(head0);
        list.add(head1);
        list.add(head2);
@@ -955,6 +960,8 @@
        list.add(head16);
        list.add(head17);
        list.add(head18);
        list.add(head19);
        list.add(head20);
        return list;
    }
@@ -977,6 +984,8 @@
        data.add("");
        data.add("");
        data.add("阿里巴巴");
        data.add("本地");
        data.add("四川成都");
        data.add("");
        return data;
    }
@@ -1053,4 +1062,11 @@
            return R.fail();
        }
    }
    @ApiOperation(value = "编辑实有人口_电子档案")
    @PostMapping("/population/edit/electronicArchives")
    R editPopulation(@RequestBody UserElectronicFileVO userElectronicFileVO){
        return communityService.editUserElectronicFile(userElectronicFileVO);
    }
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityConvenientApi.java
@@ -100,7 +100,7 @@
    @ApiOperation(value = "编辑便民服务商家")
    @PutMapping("/business/put")
    public R putComCvtBusiness(@RequestBody ComCvtBusinessDTO comCvtBusinessDTO) {
    public R putComCvtBusiness(@Validated(AddGroup.class) @RequestBody ComCvtBusinessDTO comCvtBusinessDTO) {
        return communityService.putComCvtBusiness(comCvtBusinessDTO);
    }
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/VillageApi.java
@@ -98,4 +98,14 @@
        return R.ok();
    }
    @ApiOperation(value = "编辑实有房屋", response = ComMngVillageVO.class)
    @PostMapping("editvillage/{villageId}")
    public R editvillage(@PathVariable("villageId")Long villageId,@Valid @RequestBody ComMngVillageVO comMngVillageVO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        Long communityId = loginUserInfo.getCommunityId();
        comMngVillageVO.setCommunityId(communityId);
        return communityService.editvillage(villageId,comMngVillageVO);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComMngVillageApi.java
@@ -2,7 +2,6 @@
import com.panzhihua.common.model.dtos.community.PageComMngVillageDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComMngCarExcelVO;
import com.panzhihua.common.model.vos.community.ComMngVillageServeExcelVO;
import com.panzhihua.common.model.vos.community.ComMngVillageVO;
import com.panzhihua.service_community.service.ComMngVillageService;
@@ -71,6 +70,7 @@
        return R.ok(r);
    }
    /**
     * 社区后台导入实有房屋
     * @param list 数据
@@ -83,4 +83,15 @@
        return comMngVillageService.listSaveVillage(list,communityId);
    }
    /**
     * 编辑实有房屋
     * @param villageId 动态id
     * @return 删除结果
     */
    @PostMapping("editvillage/{villageId}")
    @Transactional(rollbackFor = Exception.class)
    public R editvillage(@PathVariable("villageId")Long villageId,@Valid @RequestBody ComMngVillageVO comMngVillageVO) {
        return comMngVillageService.editVillage(villageId,comMngVillageVO);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java
@@ -4,6 +4,7 @@
import com.panzhihua.common.model.dtos.user.PageInputUserDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.user.UserElectronicFileVO;
import com.panzhihua.service_community.service.*;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -324,7 +325,6 @@
     * @param Ids   删除id集合
     * @return  删除结果
     */
    @ApiOperation(value = "批量删除实有人口")
    @PostMapping("/population/delete")
    public R deletePopulations(@RequestBody List<Long> Ids) {
        return comMngPopulationService.deletePopulations(Ids);
@@ -335,7 +335,6 @@
     * @param communityId   社区id
     * @return  查询结果
     */
    @ApiOperation(value = "根据社区id查询所有实有人口")
    @PostMapping("/population/getAll")
    public R getPopulationListByCommunityId(@RequestParam(value = "communityId") Long communityId) {
        return comMngPopulationService.getPopulationListByCommunityId(communityId);
@@ -346,7 +345,6 @@
     * @param Ids   实有人口id集合
     * @return  查询结果
     */
    @ApiOperation(value = "批量删除实有人口")
    @PostMapping("/population/getList")
    public R getPopulationLists(@RequestBody List<Long> Ids) {
        return comMngPopulationService.getPopulationLists(Ids);
@@ -381,4 +379,15 @@
    public R deleteSpecialInputUser(@RequestParam(value = "id") Long id){
        return comMngPopulationService.deleteSpecialInputUser(id);
    }
    /**
     * 编辑实有人口_电子档案
     * @param userElectronicFileVO
     * @return
     */
    @PostMapping("/population/edit/electronicArchives")
    R editPopulation(@RequestBody UserElectronicFileVO userElectronicFileVO){
        return comMngPopulationService.editUserElectronicFile(userElectronicFileVO);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/NeighborApi.java
@@ -182,6 +182,7 @@
     * @param vo 请求参数
     */
    @PostMapping("changeCommentStatusByAdmin")
    @Transactional(rollbackFor = Exception.class)
    public R changeCommentStatusByAdmin(@RequestBody ChangeCommentStatusByAdminVO vo) {
        return comActNeighborCircleService.changeCommentStatusByAdmin(vo);
    }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ShopApi.java
@@ -1,5 +1,7 @@
package com.panzhihua.service_community.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
import com.panzhihua.common.model.dtos.shop.*;
import com.panzhihua.common.controller.BaseController;
@@ -7,15 +9,15 @@
import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopStoreDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.AddShopGoodsVO;
import com.panzhihua.common.model.vos.shop.*;
import com.panzhihua.service_community.model.dos.ComShopSysConfDO;
import com.panzhihua.service_community.service.*;
import com.panzhihua.common.model.vos.shop.ShopOperLogVO;
import com.panzhihua.common.model.vos.shop.ShopStoreVO;
import com.panzhihua.service_community.service.ComShopGoodsService;
import com.panzhihua.service_community.service.ComShopOperLogService;
import com.panzhihua.service_community.service.ComShopOrderService;
import com.panzhihua.service_community.service.ComShopStoreService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -41,6 +43,8 @@
    private ComShopCartService comShopCartService;
    @Resource
    private ComShopUserAddressService comShopUserAddressService;
    @Resource
    private ComShopSysConfService comShopSysConfService;
    /**
     * 店铺列表-分页查询
@@ -515,4 +519,51 @@
    public R wxPay(@RequestBody OrderPayDTO orderPayDTO){
        return  comShopOrderService.wxPay(orderPayDTO);
    }
    /**
     * 商城系统配置
     * @param comShopSysConfDTO
     * @return
     */
    @PostMapping("/conf/edit")
    R editShopSysConf(@RequestBody ComShopSysConfDTO comShopSysConfDTO){
        ComShopSysConfDO comShopSysConfDO = comShopSysConfService.getBaseMapper().selectById(comShopSysConfDTO.getId());
        switch (comShopSysConfDTO.getHidden()){
            case 0:
                comShopSysConfDO.setVal("0");
                comShopSysConfDO.setEnabled("1");
                break;
            case 1:
                comShopSysConfDO.setVal("1");
                comShopSysConfDO.setEnabled("1");
                break;
            default: break;
        }
        int updated = comShopSysConfService.getBaseMapper().updateById(comShopSysConfDO);
        if(updated==1){
            return R.ok();
        }
        return R.fail();
    }
    /**
     * 商城系统配置查询
     * @param pageComShopSysConfDTO
     * @return
     */
    @PostMapping("/conf/get")
    R pageShopSysConf(@RequestBody PageComShopSysConfDTO pageComShopSysConfDTO){
        List<ComShopSysConfDO> confList = comShopSysConfService.getBaseMapper().selectList(new LambdaQueryWrapper<ComShopSysConfDO>()
                        .eq(ComShopSysConfDO::getName, "SHOP_HIDDEN")
                        .orderByDesc(ComShopSysConfDO::getCreate_at));
        ComShopSysConfVO comShopSysConfVO = new ComShopSysConfVO();
        if(confList!=null && confList.size()>0){
            ComShopSysConfDO firstConf = confList.get(0);
            BeanUtils.copyProperties(firstConf, comShopSysConfVO);
            return R.ok(comShopSysConfVO);
        }
        return R.ok();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngCarDAO.java
@@ -39,7 +39,7 @@
            " LEFT JOIN com_act t1 ON t.community_id = t1.community_id " +
            " LEFT JOIN com_mng_struct_area t2 ON t2.id = t.area_id " +
            " LEFT JOIN sys_user t3 ON t.create_by = t3.user_id " +
            " WHERE t.source =2 " +
            " WHERE 1=1" +
            "<if test='pageComMngCarDTO.name != null and pageComMngCarDTO.name.trim() != &quot;&quot;'>" +
            " and t.user_name LIKE concat( '%',#{pageComMngCarDTO.name}, '%' )  " +
            " </if> " +
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java
@@ -190,5 +190,9 @@
    @Select("select user_id,card_photo_front,card_photo_back,family_book from sys_user where id_card=#{idCard}")
    UserElectronicFileVO getSysUserElectronicFile(@Param("idCard") String idCard);
    @Select("select user_id,card_photo_front,card_photo_back,family_book from sys_user where user_id=#{userId}")
    UserElectronicFileVO getSysUserById(@Param("userId") Long userId);
    @Select("update sys_user set card_photo_front=#{vo.cardPhotoFront},card_photo_back=#{vo.cardPhotoBack},family_book=#{vo.familyBook} where user_id=#{vo.userId}")
    void updateSysUserElectronicFile(@Param("vo") UserElectronicFileVO vo);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopSysConfDAO.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.panzhihua.service_community.model.dos.ComShopCartDO;
import com.panzhihua.service_community.model.dos.ComShopSysConfDO;
import org.apache.ibatis.annotations.Mapper;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 购物车表mapper类
 */
@Mapper
public interface ComShopSysConfDAO extends BaseMapper<ComShopSysConfDO> {
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationDO.java
@@ -86,6 +86,14 @@
    @EncryptDecryptField
    private String phone;
    /**
     * 外地or本地
     */
    private String outOrLocal;
    /**
     * 户口所在地
     */
    private String censusRegister;
    /**
     * 备注
     */
    private String remark;
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopOrderDO.java
@@ -67,7 +67,7 @@
    private Long receiverId;
    /**
     * 删除状态(1.未删除 2.已删除)
     * 是否已删除(1.是  2.否)
     */
    private Integer deleteStatus;
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopSysConfDO.java
New file
@@ -0,0 +1,60 @@
package com.panzhihua.service_community.model.dos;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * @auther lyq
 * @create 2021-04-14 15:03:01
 * @describe 订单表实体类
 */
@Data
@TableName("com_shop_sys_conf")
public class ComShopSysConfDO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 订单id
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 配置名称
     */
    private String name;
    /**
     * 配置备注
     */
    private String note;
    /**
     * 配置值
     */
    private String val;
    /**
     * 是否生效(0 否 1 是)
     */
    private String enabled;
    /**
     * 创建人
     */
    private String create_by;
    /**
     * 创建时间
     */
    private Date create_at;
    /**
     * 修改时间
     */
    private Date update_at;
    /**
     * 修改人
     */
    private String update_by;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActNeighborCircleService.java
@@ -107,7 +107,7 @@
    R detailNeighborCommentReply(Long id);
    /**
     * 评论的状态_修改
     * 评论的回复状态_修改
     * @param changeStatusReplyVO
     * @return
     */
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComMngPopulationService.java
@@ -7,6 +7,7 @@
import com.panzhihua.common.model.vos.community.ComMngPopulationServeExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationVO;
import com.panzhihua.common.model.vos.community.EditComMngPopulationVO;
import com.panzhihua.common.model.vos.user.UserElectronicFileVO;
import java.util.List;
@@ -128,4 +129,11 @@
     * @return  实有人口电子档信息
     */
    R electronicArchivesPopulation(Long populationId);
    /**
     * 编辑电子档案
     * @param userElectronicFileVO
     * @return
     */
    R editUserElectronicFile(UserElectronicFileVO userElectronicFileVO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComMngVillageService.java
@@ -47,4 +47,12 @@
     * @return
     */
    R listSaveVillage(List<ComMngVillageServeExcelVO> list, Long communityId);
    /**
     * 实有房屋编辑
     * @param villageId
     * @param comMngVillageVO
     * @return
     */
    R editVillage(Long villageId, ComMngVillageVO comMngVillageVO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopSysConfService.java
New file
@@ -0,0 +1,14 @@
package com.panzhihua.service_community.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.service_community.model.dos.ComShopOrderPayDO;
import com.panzhihua.service_community.model.dos.ComShopSysConfDO;
/**
 * @author cedoo
 * @create 2021-5-11 10:47:50
 * @describe
 */
public interface ComShopSysConfService extends IService<ComShopSysConfDO> {
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActNeighborCircleServiceImpl.java
@@ -591,7 +591,8 @@
        AdministratorsUserVO user = this.baseMapper.selectUserByUserId(commentDO.getUserId());
        ComActNeighborCommentByAdminVO vo = new ComActNeighborCommentByAdminVO();
        BeanUtils.copyProperties(commentDO,vo);
        vo.setUserName(user.getName());
        String name = user.getName()==null?user.getNickName():user.getName();
        vo.setUserName(name);
        return R.ok(vo);
    }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComCvtBusinessServiceImpl.java
@@ -161,7 +161,7 @@
        }else{
            List<Long> areaIds = comCvtBusinessAreaService.getBusinessServiceAreaIds(comCvtBusinessDO.getId());
            if(!ObjectUtils.isEmpty(areaIds)){
                List<ComActDO> busiDO = comActDAO.selectBatchIds(areaIds);
                comActDOS = comActDAO.selectBatchIds(areaIds);
            }
        }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -20,6 +20,7 @@
import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO;
import com.panzhihua.common.model.vos.user.InputUserInfoVO;
import com.panzhihua.common.model.vos.user.UserElectronicFileVO;
import com.panzhihua.common.utlis.AgeUtils;
import com.panzhihua.service_community.dao.ComActDAO;
import com.panzhihua.service_community.dao.ComActVillageDAO;
import com.panzhihua.service_community.dao.ComMngPopulationDAO;
@@ -173,6 +174,12 @@
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComMngPopulationVO> iPage = populationDAO.pagePopulation(page, comMngPopulationVO);
        iPage.getRecords().forEach(vo->{
            //获取用户生日
            String birthday = vo.getCardNo().substring(6, 14);
            //设置用户年龄
            vo.setBirthday(birthday);
        });
        return R.ok(iPage);
    }
@@ -503,4 +510,14 @@
        }
        return R.ok();
    }
    @Override
    public R editUserElectronicFile(UserElectronicFileVO userElectronicFileVO) {
        UserElectronicFileVO electronicFileVO = populationDAO.getSysUserById(userElectronicFileVO.getUserId());
        if(electronicFileVO==null){
            return R.fail("id有误!");
        }
         populationDAO.updateSysUserElectronicFile(userElectronicFileVO);
        return R.ok();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngVillageServiceImpl.java
@@ -14,9 +14,7 @@
import com.panzhihua.service_community.dao.ComActDAO;
import com.panzhihua.service_community.dao.ComActVillageDAO;
import com.panzhihua.service_community.dao.ComMngPopulationDAO;
import com.panzhihua.service_community.dao.ComMngVolunteerMngDAO;
import com.panzhihua.service_community.model.dos.ComActDO;
import com.panzhihua.service_community.model.dos.ComActDiscussDO;
import com.panzhihua.service_community.model.dos.ComMngPopulationDO;
import com.panzhihua.service_community.model.dos.ComMngVillageDO;
import com.panzhihua.service_community.service.ComMngVillageService;
@@ -25,10 +23,7 @@
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @author: llming
@@ -160,4 +155,24 @@
        this.saveBatch(comMngVillageDOS);
        return R.ok("共计导入实有房屋数量:" + comMngVillageDOS.size());
    }
    @Override
    public R editVillage(Long villageId, ComMngVillageVO comMngVillageVO) {
        ComMngVillageDO comMngVillageDO = this.baseMapper.selectById(villageId);
        if (comMngVillageDO == null) {
            return R.fail("id有误!");
        }
        BeanUtils.copyProperties(comMngVillageVO, comMngVillageDO);
        ComActDO comActDO = comActDAO.selectById(comMngVillageDO.getCommunityId());
        if (comActDO == null || comActDO.getStreetId() == null) {
            return R.fail("社区没有绑定街道,请绑定后操作!");
        }
        comMngVillageDO.setStreetId(comActDO.getStreetId());
        int update = this.baseMapper.update(comMngVillageDO, new LambdaQueryWrapper<ComMngVillageDO>()
                .eq(ComMngVillageDO::getVillageId, villageId));
        if(update>0){
            return R.ok(comMngVillageVO);
        }
        return R.fail();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java
@@ -156,19 +156,33 @@
        }
        //查询默认收货地址
        //查询上次购买记录的收货地址
        List<ComShopOrderDO> shopOrders = this.baseMapper.selectList(new QueryWrapper<ComShopOrderDO>()
                .eq("user_id",orderPreviewDTO.getUserId()).orderByDesc("create_at"));
        if(shopOrders.isEmpty()){//未查询到用户上一笔订单
            //查询用户收货地址中的默认地址
            ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectOne(new QueryWrapper<ComShopUserAddressDO>()
        ComShopUserAddressDO userDefaultAddressDO = comShopUserAddressDAO.selectOne(new QueryWrapper<ComShopUserAddressDO>()
                .eq("delete_status", 2)
                .eq("user_id",orderPreviewDTO.getUserId()).eq("is_default",ComShopUserAddressDO.isDefault.yes));
        //查询用户收货地址中的默认地址
        if(userDefaultAddressDO != null){
            ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO();
            BeanUtils.copyProperties(userDefaultAddressDO,userAddressVO);
            orderPreviewVO.setUserAddressVO(userAddressVO);
        }else{
            //查询上次购买记录的收货地址
            //查询到用户上一笔订单
            List<ComShopOrderDO> shopOrders = this.baseMapper.selectList(new QueryWrapper<ComShopOrderDO>()
                    .eq("delete_status", 2)
                    .eq("user_id",orderPreviewDTO.getUserId()).eq("is_default",ComShopUserAddressDO.isDefault.yes));
            if(userAddressDO != null){
                ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO();
                BeanUtils.copyProperties(userAddressDO,userAddressVO);
                orderPreviewVO.setUserAddressVO(userAddressVO);
            }else{
                    .eq("user_id",orderPreviewDTO.getUserId())
                    .orderByDesc("create_at"));
            if(shopOrders!=null && shopOrders.size()>0) {
                ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrders.get(0).getReceiverId());
                if (userAddressDO != null) {
                    ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO();
                    BeanUtils.copyProperties(userAddressDO, userAddressVO);
                    orderPreviewVO.setUserAddressVO(userAddressVO);
                }
            }
            //无默认地址, 无上一单记录 地址
           /*
           if(orderPreviewVO.getUserAddressVO()==null){
                List<ComShopUserAddressDO> userAddressDOList = comShopUserAddressDAO.selectList(new QueryWrapper<ComShopUserAddressDO>()
                        .eq("user_id",orderPreviewDTO.getUserId()).orderByDesc("create_at"));
                if(!userAddressDOList.isEmpty()){
@@ -177,16 +191,10 @@
                    orderPreviewVO.setUserAddressVO(userAddressVO);
                }
            }
        }else{//查询到用户上一笔订单
            ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrders.get(0).getReceiverId());
            if(userAddressDO != null){
                if(userAddressDO.getDeleteStatus() == 2) {
                    ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO();
                    BeanUtils.copyProperties(userAddressDO, userAddressVO);
                    orderPreviewVO.setUserAddressVO(userAddressVO);
                }
            }
            */
        }
        return R.ok(orderPreviewVO);
    }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java
@@ -94,7 +94,8 @@
    public R shopStoreDetail(PageComShopStoreDTO comShopStoreDTO) {
        //查询店铺
        ComShopStoreDO storeDO = this.baseMapper.selectById(comShopStoreDTO.getStoreId());
        if (storeDO == null) {
        boolean storeDeleted = storeDO!=null && 2==storeDO.getDeleteStatus();
        if (storeDO == null || storeDeleted) {
            return R.fail(401, "店铺不存在");
        }
        if (storeDO.getStatus().equals(ComShopStoreDO.status.no)) {
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopSysConfServiceImpl.java
New file
@@ -0,0 +1,19 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.ComShopSysConfService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
 * @auther cedoo
 * @create 2021-5-11 12:20:37
 * @describe 商品系统配置
 */
@Slf4j
@Service
public class ComShopSysConfServiceImpl extends ServiceImpl<ComShopSysConfDAO, ComShopSysConfDO> implements ComShopSysConfService {
}
springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.constants.UserConstants;
import com.panzhihua.common.exceptions.PartyBuildingMemberException;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActActivityVO;
@@ -469,6 +470,9 @@
        if (delete>0) {
//            维护用户表党员状态
            comPbMemberDAO.updateUserIsPartymember(comPbMemberDO.getIdCard());
            //删除缓存
            String userKey = UserConstants.LOGIN_USER_INFO + comPbMemberDO.getUserId();
            stringRedisTemplate.delete(userKey);
            return R.ok();
        }
        return R.fail();
@@ -518,6 +522,27 @@
        if(partyBuildingMemberVO.getAuditResult()!=null && partyBuildingMemberVO.getAuditResult().equals(1)){
            comPbMemberDO.setUpdateAt(new Date());
        }
        //编辑
        if(partyBuildingMemberVO.getJoinTime()!=null) {
            comPbMemberDO.setJoinTime(partyBuildingMemberVO.getJoinTime());
        }
        if(partyBuildingMemberVO.getEmploymentTime()!=null) {
            comPbMemberDO.setEmploymentTime(partyBuildingMemberVO.getEmploymentTime());
        }
        if(partyBuildingMemberVO.getIdCard()!=null &&!partyBuildingMemberVO.getIdCard().contains("*")){
            comPbMemberDO.setIdCard(partyBuildingMemberVO.getIdCard());
        }
        if(partyBuildingMemberVO.getName()!=null ){
            comPbMemberDO.setName(partyBuildingMemberVO.getName());
        }
        if(partyBuildingMemberVO.getOrgId()!=null ){
            comPbMemberDO.setOrgId(partyBuildingMemberVO.getOrgId());
        }
        if(partyBuildingMemberVO.getPhotoPath()!=null ){
            comPbMemberDO.setPhotoPath(partyBuildingMemberVO.getPhotoPath());
        }
        if (comPbMemberDAO.updateById(comPbMemberDO) > 0) {
            PartyBuildingMemberVO rtVO = new PartyBuildingMemberVO();
            BeanUtils.copyProperties(comPbMemberDO, rtVO);
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -253,6 +253,7 @@
                loginUserInfoVO.setIsmemberrole(1);
            }
        }
        loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard()!=null);
        return R.ok(loginUserInfoVO);
    }
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/AppletWebSecurityConfigurationAdapter.java
New file
@@ -0,0 +1,29 @@
package com.panzhihua.zuul.config;
import com.panzhihua.common.constants.SecurityConstants;
import com.panzhihua.zuul.filters.AppletAuthenticationFilter;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.AnonymousAuthenticationFilter;
/**
 * @ClasssName AppletWebSecurityConfigurationAdapter
 * @Description 小程序
 * @Author cedoo
 * @Date 2021/4/30
 * @Version 1.0
 **/
@Configuration
@Order(SecurityProperties.BASIC_AUTH_ORDER-2)
public class AppletWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/api/applets/**").authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .addFilterAfter(new AppletAuthenticationFilter(), AnonymousAuthenticationFilter.class);
    }
}
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/RealNamedConfig.java
New file
@@ -0,0 +1,17 @@
package com.panzhihua.zuul.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "applet.realname")
@Data
public class RealNamedConfig {
    private List<String> verify;
}
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/SpringSecurityConfig.java
@@ -34,6 +34,7 @@
     */
    @Resource
    private UserAuthAccessDeniedHandler userAuthAccessDeniedHandler;
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
@@ -49,16 +50,13 @@
                .and()
                // 配置没有权限自定义处理类
                .exceptionHandling().accessDeniedHandler(userAuthAccessDeniedHandler)
               .and()
             .csrf().disable();
            // 基于Token不需要session
            http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
            // 禁用缓存
            http.headers().cacheControl();
            http.addFilterBefore(new JWTAuthenticationTokenFilter(), AnonymousAuthenticationFilter.class);
                .and()
                .csrf().disable();
        // 基于Token不需要session
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        // 禁用缓存
        http.headers().cacheControl();
        http.addFilterBefore(new JWTAuthenticationTokenFilter(), AnonymousAuthenticationFilter.class);
    }
}
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/AppletAuthenticationFilter.java
New file
@@ -0,0 +1,135 @@
package com.panzhihua.zuul.filters;
import com.alibaba.fastjson.JSONArray;
import com.panzhihua.common.constants.*;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.utlis.JWTTokenUtil;
import com.panzhihua.common.utlis.ResultUtil;
import com.panzhihua.zuul.config.RealNamedConfig;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.stereotype.Component;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 小程序权限验证
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-11-25 16:35
 **/
@Component
public class AppletAuthenticationFilter implements Filter {
    private StringRedisTemplate stringRedisTemplate;
    @Autowired
    private RealNamedConfig realNamedConfig;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    /**
     * 用户是否登录校验
     *
     * @param servletRequest  请求
     * @param servletResponse 返回
     * @param filterChain     过滤器链条
     * @throws IOException      io
     * @throws ServletException servlet
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        SafeboxRequestWrapper safeboxRequestWrapper = new SafeboxRequestWrapper(request);
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        // 获取请求头中JWT的Token
        String tokenHeader = request.getHeader(TokenConstant.TOKEN_HEADER);
        if (null != tokenHeader && tokenHeader.startsWith(TokenConstant.TOKEN_PRE)
                &&realNamedConfig!=null && realNamedConfig.getVerify()!=null &&realNamedConfig.getVerify().size()>0) {
            String token = tokenHeader.replace(TokenConstant.TOKEN_PRE, "");
            // token解析
            Claims claims = JWTTokenUtil.getClaimsFromToken(token);
            if(claims!=null) {//检查token有效
                String username = claims.getSubject();
                int type = (Integer) claims.get("type");
                if (1 == type) {//小程序用户统一角色
                    String requestURI = request.getRequestURI();
                    String requestMethod = request.getMethod().toLowerCase();
                    ServletContext context = request.getServletContext();
                    ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
                    stringRedisTemplate = ctx.getBean(StringRedisTemplate.class);
                    ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
                    String appletUserRoleKey = SecurityConstants.ROLE_APPLETS_USER + username;
                    Boolean userHasRole = stringRedisTemplate.hasKey(appletUserRoleKey);
                    boolean needCheck = false;
                    List<String> checkedUrl = realNamedConfig.getVerify();
                    checkedUrl = checkedUrl != null ? checkedUrl : new ArrayList<>();
                    for (int i = 0; i < checkedUrl.size(); i++) {
                        String url = checkedUrl.get(i);
                        if (url.toLowerCase().startsWith(requestMethod) && url.endsWith(requestURI)) {
                            needCheck = true;
                        } else {
                            continue;
                        }
                    }
                    if (needCheck) {
                        if (userHasRole) {
                            boolean userHashRight = false;
                            try {
                                String roles = valueOperations.get(appletUserRoleKey);
                                List<SimpleGrantedAuthority> authorities = JSONArray.parseArray(roles, SimpleGrantedAuthority.class);
                                if (authorities != null && authorities.size() > 0) {
                                    AtomicBoolean userHasRightRole = new AtomicBoolean(false);
                                    authorities.forEach(authority -> {
                                        if (authority.getAuthority().equals(SecurityConstants.ROLE_APPLETS_REAL_NAMED)) {
                                            userHasRightRole.set(true);
                                        }
                                    });
                                    if (userHasRightRole.get()) {
                                        //用户包含“已实名”角色,则放行 什么也不做
                                        userHashRight = true;
                                    }
                                }
                            } catch (Exception e) {
                                userHashRight = false;
                            }
                            if (!userHashRight) {
                                ResultUtil.responseJson(response, R.fail(HttpStatus.FORBIDDEN, "用户未实名"));
                                return;
                            }
                        } else {
                            ResultUtil.responseJson(response, R.fail(HttpStatus.FORBIDDEN, "用户未实名"));
                            return;
                        }
                    }
                }
            }
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }
    @Override
    public void destroy() {
    }
}
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
@@ -1,181 +1,208 @@
package com.panzhihua.zuul.filters;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.panzhihua.common.constants.*;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.AES;
import com.panzhihua.common.utlis.JWTTokenUtil;
import com.panzhihua.common.utlis.ResultUtil;
import io.jsonwebtoken.Claims;
import org.springframework.context.ApplicationContext;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: token校验
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-11-25 16:35
 **/
@Component
public class JWTAuthenticationTokenFilter implements Filter {
    private StringRedisTemplate stringRedisTemplate;
    private UserService userService;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    /**
     * 用户是否登录校验
     *
     * @param servletRequest  请求
     * @param servletResponse 返回
     * @param filterChain     过滤器链条
     * @throws IOException      io
     * @throws ServletException servlet
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        ServletContext context = request.getServletContext();
        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
        stringRedisTemplate=ctx.getBean(StringRedisTemplate.class);
        ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
        userService=ctx.getBean(UserService.class);
        String requestURI = request.getRequestURI();
        boolean login = requestURI.contains("login");
        boolean doc = requestURI.contains("doc.html");
        boolean css = requestURI.contains(".css");
        boolean js = requestURI.contains(".js");
        boolean ui = requestURI.contains("/ui");
        boolean swagger = requestURI.contains("swagger");
        boolean ico = requestURI.contains(".ico");
        boolean docs = requestURI.contains("-docs");
        boolean error = requestURI.contains("error");
        boolean useragreement = requestURI.contains("useragreement");
        boolean refreshToken = requestURI.contains("refreshToken");
        boolean logout = requestURI.contains("logout");
        boolean wxPay = requestURI.contains("wxNotify");
        boolean wxCgi = requestURI.contains("cgi");
        boolean isShop = requestURI.contains("isShop");
        boolean listadvertisement = requestURI.contains("listadvertisement");
//        boolean pageworkguide = !requestURI.contains("workguide/pageworkguide");
//        boolean detailworkguide = !requestURI.contains("workguide/detailworkguide");
//        boolean pagedynamic = !requestURI.contains("partybuilding/pagedynamic");
//        boolean infodynamic = !requestURI.contains("partybuilding/infodynamic");
        SafeboxRequestWrapper safeboxRequestWrapper = new SafeboxRequestWrapper(request);
        if (login||doc||css||js||ui||swagger||ico||docs||error||refreshToken||useragreement||wxPay
                ||wxCgi||isShop||listadvertisement) {
            //什么也不做
        } else {
            // 获取请求头中JWT的Token
            String tokenHeader = request.getHeader(TokenConstant.TOKEN_HEADER);
            if (null != tokenHeader && tokenHeader.startsWith(TokenConstant.TOKEN_PRE)) {
                // token过期
                String token = tokenHeader.replace(TokenConstant.TOKEN_PRE, "");
                Boolean hasKey = stringRedisTemplate.hasKey(UserConstants.LOGOUT_TOKEN + token);
                if (hasKey) {
                    ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "用户已经登出"));
                    return;
                }
                Boolean expired = JWTTokenUtil.isTokenExpired(token);
                if (expired) {
                    if (logout) {
                        ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "登出成功"));
                    } else {
                        ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token过期"));
                    }
                    return;
                }
                // token解析
                Claims claims = JWTTokenUtil.getClaimsFromToken(token);
                if (ObjectUtils.isEmpty(claims)) {
                    ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token校验失败"));
                    return;
                }
                String username = claims.getSubject();
                int type = (Integer) claims.get("type");
                if (ObjectUtils.isEmpty(username)) {
                    ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token校验失败"));
                    return;
                }
                List<SimpleGrantedAuthority> authorities = new ArrayList<>();
                List<SimpleGrantedAuthority> authorities1 = new ArrayList<>();
                String key = SecurityConstants.ROLE_USER + username;
                Boolean aBoolean = stringRedisTemplate.hasKey(key);
                if (1 == type) {//小程序用户统一角色
                    authorities.add(new SimpleGrantedAuthority(SecurityConstants.ROLE_APPLETS));
                } else {
                    if (aBoolean) {
                        String roles = valueOperations.get(key);
                        authorities = JSONArray.parseArray(roles, SimpleGrantedAuthority.class);
                    } else {
                        R<List<String>> r = userService.getUserRoles(username);
                        List<String> data =(List<String>)r.getData();
                        if (!ObjectUtils.isEmpty(data)) {
                            data.forEach(s -> {
                                authorities1.add(new SimpleGrantedAuthority(s));
                            });
                            authorities = authorities1;
                            valueOperations.set(key, JSONArray.toJSONString(authorities), 24, TimeUnit.HOURS);
                        }
                    }
                }
                UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(username, username, authorities);//主要使用权限 账户 密码 不重要
                SecurityContextHolder.getContext().setAuthentication(authentication);
                safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_LOGOUT,tokenHeader);
                //登录用户的所有信息
                String userKey = UserConstants.LOGIN_USER_INFO + username;
                Boolean hasKeyLoginUserInfo = stringRedisTemplate.hasKey(userKey);
                if(hasKeyLoginUserInfo){
                    String userInfo = valueOperations.get(userKey);
                    byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                    String hexStr = AES.parseByte2HexStr(encrypt);
                    safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                }else{
                    R<LoginUserInfoVO> r = userService.getUserInfoByUserId(username);
                    if (!R.isOk(r)) {
                        ResultUtil.responseJson(response, R.fail(HttpStatus.ERROR, "登录用户信息查询失败"));
                        return;
                    }
                    LoginUserInfoVO data = r.getData();
                    String userInfo = JSONObject.toJSONString(data);
                    valueOperations.set(userKey,userInfo,24,TimeUnit.HOURS);
                    byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                    String hexStr = AES.parseByte2HexStr(encrypt);
                    safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO,hexStr );
                }
            } else {
                ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token校验失败"));
                return;
            }
        }
        filterChain.doFilter(safeboxRequestWrapper,response);
        }
    @Override
    public void destroy() {
    }
}
package com.panzhihua.zuul.filters;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.panzhihua.common.constants.*;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.AES;
import com.panzhihua.common.utlis.JWTTokenUtil;
import com.panzhihua.common.utlis.ResultUtil;
import io.jsonwebtoken.Claims;
import org.springframework.context.ApplicationContext;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: token校验
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-11-25 16:35
 **/
@Component
public class JWTAuthenticationTokenFilter implements Filter {
    private StringRedisTemplate stringRedisTemplate;
    private UserService userService;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    /**
     * 用户是否登录校验
     *
     * @param servletRequest  请求
     * @param servletResponse 返回
     * @param filterChain     过滤器链条
     * @throws IOException      io
     * @throws ServletException servlet
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        ServletContext context = request.getServletContext();
        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
        stringRedisTemplate=ctx.getBean(StringRedisTemplate.class);
        ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
        userService=ctx.getBean(UserService.class);
        String requestURI = request.getRequestURI();
        boolean login = requestURI.contains("login");
        boolean doc = requestURI.contains("doc.html");
        boolean css = requestURI.contains(".css");
        boolean js = requestURI.contains(".js");
        boolean ui = requestURI.contains("/ui");
        boolean swagger = requestURI.contains("swagger");
        boolean ico = requestURI.contains(".ico");
        boolean docs = requestURI.contains("-docs");
        boolean error = requestURI.contains("error");
        boolean useragreement = requestURI.contains("useragreement");
        boolean refreshToken = requestURI.contains("refreshToken");
        boolean logout = requestURI.contains("logout");
        boolean wxPay = requestURI.contains("wxNotify");
        boolean wxCgi = requestURI.contains("cgi");
        boolean isShop = requestURI.contains("isShop");
        boolean listadvertisement = requestURI.contains("listadvertisement");
//        boolean pageworkguide = !requestURI.contains("workguide/pageworkguide");
//        boolean detailworkguide = !requestURI.contains("workguide/detailworkguide");
//        boolean pagedynamic = !requestURI.contains("partybuilding/pagedynamic");
//        boolean infodynamic = !requestURI.contains("partybuilding/infodynamic");
        SafeboxRequestWrapper safeboxRequestWrapper = new SafeboxRequestWrapper(request);
        if (login||doc||css||js||ui||swagger||ico||docs||error||refreshToken||useragreement||wxPay
                ||wxCgi||isShop||listadvertisement) {
            //什么也不做
        } else {
            // 获取请求头中JWT的Token
            String tokenHeader = request.getHeader(TokenConstant.TOKEN_HEADER);
            if (null != tokenHeader && tokenHeader.startsWith(TokenConstant.TOKEN_PRE)) {
                // token过期
                String token = tokenHeader.replace(TokenConstant.TOKEN_PRE, "");
                Boolean hasKey = stringRedisTemplate.hasKey(UserConstants.LOGOUT_TOKEN + token);
                if (hasKey) {
                    ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "用户已经登出"));
                    return;
                }
                Boolean expired = JWTTokenUtil.isTokenExpired(token);
                if (expired) {
                    if (logout) {
                        ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "登出成功"));
                    } else {
                        ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token过期"));
                    }
                    return;
                }
                // token解析
                Claims claims = JWTTokenUtil.getClaimsFromToken(token);
                if (ObjectUtils.isEmpty(claims)) {
                    ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token校验失败"));
                    return;
                }
                String username = claims.getSubject();
                int type = (Integer) claims.get("type");
                if (ObjectUtils.isEmpty(username)) {
                    ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token校验失败"));
                    return;
                }
                List<SimpleGrantedAuthority> authorities = new ArrayList<>();
                List<SimpleGrantedAuthority> authorities1 = new ArrayList<>();
                if (1 == type) {//小程序用户统一角色
                    String roleAppletKey = SecurityConstants.ROLE_APPLETS_USER +username;
                    if(stringRedisTemplate.hasKey(roleAppletKey)){
                        String roles = valueOperations.get(roleAppletKey);
                        authorities = JSONArray.parseArray(roles, SimpleGrantedAuthority.class);
                    }else {
                        authorities.add(new SimpleGrantedAuthority(SecurityConstants.ROLE_APPLETS));
                        String userKey = UserConstants.LOGIN_USER_INFO + username;
                        Boolean hasKeyLoginUserInfo = stringRedisTemplate.hasKey(userKey);
                        if (hasKeyLoginUserInfo) {
                            String userInfo = valueOperations.get(userKey);
                            LoginUserInfoVO loginUserInfoVO = JSONObject.parseObject(userInfo, LoginUserInfoVO.class);
                            //判断用户是否已实名制
                            if (loginUserInfoVO.getIsRealNamed() != null && loginUserInfoVO.getIsRealNamed()) {
                                authorities.add(new SimpleGrantedAuthority(SecurityConstants.ROLE_APPLETS_REAL_NAMED));
                            }
                        }else{
                            //查询登陆用户信息
                            R<LoginUserInfoVO> r = userService.getUserInfoByUserId(username);
                            if (!R.isOk(r)) {
                                ResultUtil.responseJson(response, R.fail(HttpStatus.ERROR, "登录用户信息查询失败"));
                                return;
                            }
                            LoginUserInfoVO data = r.getData();
                            String userInfo = JSONObject.toJSONString(data);
                            valueOperations.set(userKey,userInfo,24,TimeUnit.HOURS);
                        }
                        valueOperations.set(roleAppletKey, JSONArray.toJSONString(authorities), 24, TimeUnit.HOURS);
                    }
                } else {
                    String key = SecurityConstants.ROLE_USER + username;
                    Boolean aBoolean = stringRedisTemplate.hasKey(key);
                    if (aBoolean) {
                        String roles = valueOperations.get(key);
                        authorities = JSONArray.parseArray(roles, SimpleGrantedAuthority.class);
                    } else {
                        R<List<String>> r = userService.getUserRoles(username);
                        List<String> data =(List<String>)r.getData();
                        if (!ObjectUtils.isEmpty(data)) {
                            data.forEach(s -> {
                                authorities1.add(new SimpleGrantedAuthority(s));
                            });
                            authorities = authorities1;
                            valueOperations.set(key, JSONArray.toJSONString(authorities), 24, TimeUnit.HOURS);
                        }
                    }
                }
                UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(username, username, authorities);//主要使用权限 账户 密码 不重要
                SecurityContextHolder.getContext().setAuthentication(authentication);
                safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_LOGOUT,tokenHeader);
                //登录用户的所有信息
                String userKey = UserConstants.LOGIN_USER_INFO + username;
                Boolean hasKeyLoginUserInfo = stringRedisTemplate.hasKey(userKey);
                if(hasKeyLoginUserInfo){
                    String userInfo = valueOperations.get(userKey);
                    byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                    String hexStr = AES.parseByte2HexStr(encrypt);
                    safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                }else{
                    R<LoginUserInfoVO> r = userService.getUserInfoByUserId(username);
                    if (!R.isOk(r)) {
                        ResultUtil.responseJson(response, R.fail(HttpStatus.ERROR, "登录用户信息查询失败"));
                        return;
                    }
                    LoginUserInfoVO data = r.getData();
                    String userInfo = JSONObject.toJSONString(data);
                    valueOperations.set(userKey,userInfo,24,TimeUnit.HOURS);
                    byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                    String hexStr = AES.parseByte2HexStr(encrypt);
                    safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO,hexStr );
                }
            } else {
                ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token校验失败"));
                return;
            }
        }
        filterChain.doFilter(safeboxRequestWrapper,response);
        }
    @Override
    public void destroy() {
    }
}
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/resources/bootstrap.yml
@@ -28,5 +28,60 @@
    service-url:
      defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
# applet 需实名认证的接口地址
applet:
  realname:
    verify:
      - POST:/api/applets/house
      - POST:/api/applets/putHouse
      - POST:/api/applets/undercarriageHouse
      - GET:/api/applets/delHouse
      - POST:/api/applets/questnaire/add
      - GET:/api/applets/questnaire/delete
      - POST:/api/applets/questnaire/edit
      - GET:/api/applets/questnaire/stat/details
      - POST:/api/applets/questnaire/toggle
      - POST:/api/applets/questnaire/stat/answer
      - POST:/api/applets/index/comacteasyphotocomment
      - POST:/api/applets/index/commentsign
      - POST:/api/applets/index/addmessageback
      - POST:/api/applets/index/addmessage
      - POST:/api/applets/index/easyphoto
      - PUT:/api/applets/index/easyphoto
      - POST:/api/applets/index/microwish
      - PUT:/api/applets/index/microwish
      - POST:/api/applets/discuss
      - POST:/api/applets/discusscommentback
      - POST:/api/applets/discusscomment
      - PUT:/api/applets/discusscommentuser
      - POST:/api/applets/discussuser
      - PUT:/api/applets/discussuser
      - POST:/api/applets/neighbor/addNeighborByApp
      - POST:/api/applets/neighbor/cancel/fabulous
      - POST:/api/applets/neighbor/comment
      - POST:/api/applets/neighbor/fabulous
      - POST:/api/applets/neighbor/reply
      - PUT:/api/applets/community/signactivity
      - POST:/api/applets/community/volunteer
      - POST:/api/applets/user/houses
      - POST:/api/appletsbackstage/common/data/car/save
      - DELETE:/api/appletsbackstage/common/data/car/delete
      - POST:/api/applets/community/car/register
      - PUT:/api/applets/partybuilding/activitysignup
      - GET:/api/applets/questnaire/stat
      - GET:/api/applets/questnaire/view
      - POST:/api/applets/user/addfamily
      - PUT:/api/applets/user/putfamily
      - POST:/api/applets/user/getUserArchives
      - POST:/api/applets/user/updateUserArchives
      - POST:/api/applets/user/partybuildingembercertification
      - GET:/api/applets/user/partybuildingembercertification
      - GET:/api/applets/index/pagemymessage
      - POST:/api/applets/index/pagemymessage
      - POST:/api/applets/user/listactivity
      - POST:/api/applets/partybuilding/activityinfo
      - PUT:/api/applets/user/microwishconfirm
      - POST:/api/applets/user/pagemicrowish
      - POST:/api/applets/user/pageeasyphoto
      - POST:/api/applets/neighbor/user/page
      - GET:/api/applets/user/listfamily