From 8fc1e2dc0b0b0ebacfefe32850dad64be4440b1e Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Tue, 30 Nov 2021 20:59:40 +0800 Subject: [PATCH] Merge branch 'score_shop' into api_score_meger --- zq-erp/src/main/resources/templates/views/common/login.html | 4 zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml | 6 zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml | 62 + zq-erp/src/main/resources/templates/views/admin/index.html | 2 zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/map.html | 2 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html | 13 zq-erp/src/main/java/com/matrix/system/app/action/ApiSettingAction.java | 15 zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 70 + zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java | 50 + zq-erp/src/main/resources/config/prd/system.properties | 3 zq-erp/src/main/resources/config/test/application.properties | 2 zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java | 17 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html | 126 ++ zq-erp/src/main/java/com/matrix/system/app/dto/SettingDto.java | 13 zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java | 3 zq-erp/src/main/java/com/matrix/system/app/action/ApiUsersAction.java | 20 zq-erp/src/main/java/com/matrix/system/hive/dto/ServiceOrderTimeDto.java | 34 zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java | 17 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html | 2 zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html | 12 zq-erp/src/main/resources/mybatis/mapper/common/SysCompanyDao.xml | 15 zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderDao.java | 3 zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java | 3 zq-erp/src/main/resources/config/system.properties | 2 zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java | 10 zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html | 148 +++ zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java | 5 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java | 15 zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml | 179 ++++ zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java | 3 zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java | 8 zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java | 1 zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java | 3 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html | 7 zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/show.html | 2 zq-erp/src/main/java/com/matrix/system/common/bean/SysCompany.java | 14 zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/map.html | 2 zq-erp/src/main/resources/templates/views/admin/hive/orgment/shopInfo-form.html | 2 zq-erp/src/main/resources/templates/views/admin/hive/statistics/statistics-projuse-item.html | 9 zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml | 8 zq-erp/src/main/resources/templates/views/admin/hive/statistics/vip-arrears-list.html | 79 + zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml | 18 zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/map.html | 2 zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html | 9 zq-erp/src/main/java/com/matrix/system/common/tools/DataAuthUtil.java | 4 zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java | 15 zq-erp/src/main/java/com/matrix/system/app/action/ApiRankingAction.java | 13 zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java | 3 zq-erp/src/main/resources/config/mdprd/system.properties | 3 zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java | 1 zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java | 4 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java | 1 zq-erp/src/main/resources/config/application.properties | 16 zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java | 10 zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/statistics-projuse-item.html | 9 zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java | 10 zq-erp/src/main/java/com/matrix/system/hive/statistics/ProjUseStatisticsAction.java | 4 zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/index.html | 2 zq-erp/src/main/resources/templates/views/admin/hive-erp/shop/shopInfo-form.html | 2 zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html | 223 +++++ zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/index.html | 2 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html | 2 zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml | 6 zq-erp/src/main/resources/config/test/system.properties | 2 zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java | 2 zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java | 12 zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java | 548 ++++++----- zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java | 13 zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js | 4 zq-erp/src/main/java/com/matrix/system/app/dto/RankingDto.java | 3 zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java | 12 zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java | 5 zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml | 9 zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java | 140 +++ zq-erp/src/main/java/com/matrix/system/app/vo/VipInfoVo.java | 10 zq-erp/src/main/resources/templates/views/super/sysCompany-list.html | 1 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 5 zq-erp/src/main/resources/templates/views/super/sysCompany-form.html | 335 +++--- zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml | 19 zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java | 2 zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java | 31 zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java | 9 zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java | 4 zq-erp/src/main/java/com/matrix/system/hive/vo/ServiceOrderInfoVo.java | 69 + 85 files changed, 2,080 insertions(+), 507 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java b/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java index 54801c7..c3067f7 100644 --- a/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java +++ b/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java @@ -72,6 +72,9 @@ //小程序公司与域名对应关系拦截 registry.addInterceptor(hostInterceptor).addPathPatterns("/**/wxapi/**") + .addPathPatterns("/api/common/wxLogin/**") + .addPathPatterns("/api/common/bindUser") + .addPathPatterns("/api/user/xcxloginOut/**") .excludePathPatterns("/wxCommon/wxapi/wxpayCallback") .excludePathPatterns("/wxCommon/wxapi/rechargeCallBack"); } diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java index f3e8702..ed9b2c4 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java +++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java @@ -1,5 +1,8 @@ package com.matrix.system.app.action; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.matrix.component.tools.HttpCurlUtil; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.*; import com.matrix.system.app.authority.AppAuthorityManager; @@ -8,9 +11,14 @@ import com.matrix.system.app.vo.UserInfoVo; import com.matrix.system.common.authority.strategy.AccountPasswordLogin; import com.matrix.system.common.authority.strategy.LoginStrategy; +import com.matrix.system.common.bean.SysCompany; import com.matrix.system.common.bean.SysUsers; +import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.init.LocalCache; +import com.matrix.system.common.init.UserCacheManager; +import com.matrix.system.common.interceptor.HostInterceptor; +import com.matrix.system.common.service.SysCompanyService; import com.matrix.system.common.service.SysUsersService; import com.matrix.system.common.tools.PasswordUtil; import com.matrix.system.common.tools.UploadUtil; @@ -19,10 +27,12 @@ import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.hive.plugin.util.ImageUtil; import com.matrix.system.hive.service.SysShopInfoService; +import com.matrix.system.shopXcx.api.WeChatApiTools; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import net.sf.json.JSONObject; import org.apache.commons.fileupload.FileUploadException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -62,18 +72,29 @@ @Autowired private BusParameterSettingsDao busParameterSettingsDao; + @Autowired + private SysCompanyService sysCompanyService;; + + @Autowired + WeChatApiTools weChatApiTools; + + @Autowired + private UserCacheManager userCacheManager; @Value("${file_storage_path}") private String fileStoragePath; @Value("${static_resource_url}") private String nginxUrl; + @Value("${login_public_key}") + private String publicKey; + @ApiOperation(value = "登陆接口", notes = "手机端登陆接口") @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = UserInfoVo.class) }) @PostMapping(value = "/login") - public AjaxResult login(@RequestBody @Validated LoginDto loginDto) { + public AjaxResult login(@RequestBody @Validated LoginDto loginDto) throws Exception { SysUsers user = new SysUsers(); user.setSuAccount(loginDto.getUsername()); @@ -97,10 +118,12 @@ userInfoVo.setRoleName(user.getRoleName()); userInfoVo.setPhoto(user.getSuPhoto()); + String sb = token + "_1" + "_/api/vip/findVipInfoById/972"; AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功"); authorityManager.initUserPower(result,user); result.putInMap("user", userInfoVo); result.putInMap("token", token); + result.putInMap("rasToken", RSAUtils.encryptByPublicKey(sb, publicKey)); return result; } @@ -247,6 +270,121 @@ } + @ApiOperation(value = "根据企业编码获取对应的请求地址") + @PostMapping(value = "/getUrlByCompanyCode") + public AjaxResult getUrlByCompanyCode(@RequestBody SettingDto codeDto) { + SysCompany query = new SysCompany(); + query.setComCode(codeDto.getCode()); + List<SysCompany> list = sysCompanyService.findByModel(query); + if (CollUtil.isEmpty(list)) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "企业编码有误"); + } + AjaxResult ajaxResult = new AjaxResult(); + ajaxResult.setStatus(AjaxResult.STATUS_SUCCESS); + ajaxResult.putInMap("url", list.get(0).getComWebUrl()); + return ajaxResult; + } + + @ApiOperation(value = "管理端小程序登录") + @PostMapping(value = "/wxLogin/{code}") + public AjaxResult wxLogin(@PathVariable("code") String code) throws IOException { + if (StrUtil.isBlank(code)) { + return AjaxResult.buildFailInstance("code不存在"); + } + AjaxResult res = new AjaxResult(); + String requrl = weChatApiTools.getManagerXcxLoginUrl(code); + + String resultData = HttpCurlUtil.sendGetHttp(requrl, null); + JSONObject json = JSONObject.fromObject(resultData); + LogUtil.debug("管理端小程序登录获取到登录信息={}", json); + + if (json.containsKey("errcode")) { + res.setStatus(AjaxResult.STATUS_FAIL); + res.setInfo("自动登录失败"); + LogUtil.info("微信登录获取到异常信息errcode"); + return res; + } + + String openId = json.getString("openid"); + res.setStatus(AjaxResult.STATUS_SUCCESS); + res.putInMap("openId", openId); + SysUsers hasBind = sysUsersService.findByOpenId(openId, HostInterceptor.getCompanyId()); + if (hasBind == null) { + res.setInfo("未绑定用户"); + return res; + } + + String token = userCacheManager.saveUserInfo(hasBind); + LogUtil.info("用户token={}", token); + + authorityManager.initUserPower(res, hasBind); + + UserInfoVo userInfoVo = new UserInfoVo(); + if(hasBind.getShopId()!=null){ + SysShopInfo shopInfo = sysShopInfoService.findById(hasBind.getShopId()); + hasBind.setShopName(shopInfo.getShopName()); + userInfoVo.setShopName(shopInfo.getShopShortName()); + } + + userInfoVo.setId(hasBind.getSuId()); + userInfoVo.setName(hasBind.getSuName()); + userInfoVo.setRoleName(hasBind.getRoleName()); + userInfoVo.setPhoto(hasBind.getSuPhoto()); + + res.putInMap("token", token); + res.putInMap("userInfo", userInfoVo); + return res; + } + + @ApiOperation(value = "绑定用户") + @PostMapping(value = "/bindUser") + public AjaxResult bindUser(@RequestBody @Validated LoginDto loginDto) { + SysUsers user = new SysUsers(); + user.setSuAccount(loginDto.getUsername()); + user.setSuPassword(loginDto.getPassword()); + LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService); + user = authorityManager.login(apLogin); + user.setSuPassword(null); + user.setOpenIds(null); + String token = userCacheManager.saveUserInfo(user); + + AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功"); + authorityManager.initUserPower(result, user); + + UserInfoVo userInfoVo = new UserInfoVo(); + if(user.getShopId()!=null){ + SysShopInfo shopInfo = sysShopInfoService.findById(user.getShopId()); + user.setShopName(shopInfo.getShopName()); + userInfoVo.setShopName(shopInfo.getShopShortName()); + } + + userInfoVo.setId(user.getSuId()); + userInfoVo.setName(user.getSuName()); + userInfoVo.setRoleName(user.getRoleName()); + userInfoVo.setPhoto(user.getSuPhoto()); + + result.putInMap("token", token); + result.putInMap("userInfo", userInfoVo); + + synchronized (this) { + SysUsers hasBind = sysUsersService.findByOpenId(loginDto.getOpenId(), HostInterceptor.getCompanyId()); + if (hasBind != null) { + if(StrUtil.isNotBlank(hasBind.getOpenIds())) { + List<String> openIds = StrUtil.split(hasBind.getOpenIds(), ','); + openIds.remove(loginDto.getOpenId()); + + sysUsersService.modifyUserOpenId(CollUtil.join(openIds, ","), hasBind.getSuId()); + } + } + + List<String> openIds = StrUtil.split(user.getOpenIds(), ','); + openIds.add(loginDto.getOpenId()); + user.setOpenIds(CollUtil.join(openIds, ",")); + sysUsersService.modifyByModel(user); + } + + return result; + } } diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiRankingAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiRankingAction.java index f3d4d1f..c6fa5d6 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiRankingAction.java +++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiRankingAction.java @@ -86,4 +86,17 @@ achieveNew.setT1(rankingDto.getType()); return AjaxResult.buildSuccessInstance(achieveNewDao.selectBeauticianConsumeAchieveRanking(achieveNew)); } + + @ApiOperation(value = "人头数排名", notes = "人头数排名") + @ApiResponses({ + @ApiResponse(code = 200, message = "ok", response = RankingVo.class) + }) + @PostMapping(value = "/findNumOfPeopleRanking") + public AjaxResult findNumOfPeopleRanking(@RequestBody RankingDto rankingDto) { + AchieveNew achieveNew = new AchieveNew(); + QueryUtil.setQueryLimitCom(achieveNew); + achieveNew.setDatatime(new Date()); + achieveNew.setT1(rankingDto.getType()); + return AjaxResult.buildSuccessInstance(achieveNewDao.selectNumOfPeopleAchieveRanking(achieveNew)); + } } diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiSettingAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiSettingAction.java index 312228d..47d0e49 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiSettingAction.java +++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiSettingAction.java @@ -3,6 +3,7 @@ import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.WebUtil; +import com.matrix.system.app.dto.SettingDto; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; @@ -12,10 +13,7 @@ import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * @author jyy @@ -44,4 +42,13 @@ return result; } + @ApiOperation(value = "根据code获取配置", notes = "根据code获取配置") + @PostMapping(value = "/findAppSettingsByCode") + public AjaxResult findAppSettingsByCode(@RequestBody SettingDto settingDto) { + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); + AjaxResult result = AjaxResult.buildSuccessInstance("查询成功"); + result.putInMap(settingDto.getCode(), busParameterSettingsDao.selectCompanyParamByCode(settingDto.getCode(),user.getCompanyId())); + return result; + } + } diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiUsersAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiUsersAction.java index e4fdf69..f0dcbb0 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiUsersAction.java +++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiUsersAction.java @@ -1,5 +1,7 @@ package com.matrix.system.app.action; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.DateUtil; @@ -16,6 +18,7 @@ import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.init.LocalCache; import com.matrix.system.common.interceptor.ApiUserLoginInterceptor; +import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.common.service.SysUsersService; import com.matrix.system.common.tools.DataAuthUtil; import com.matrix.system.common.tools.PasswordUtil; @@ -108,6 +111,23 @@ return AjaxResult.buildSuccessInstance("退出成功"); } + @ApiOperation(value = "小程序退出登陆", notes = "小程序退出登陆") + @GetMapping(value = "/xcxloginOut/{code}") + public AjaxResult xcxloginOut(HttpServletRequest request, @PathVariable("code") String code) { + SysUsers hasBind = sysUsersService.findByOpenId(code, HostInterceptor.getCompanyId()); + if (hasBind != null) { + if(StrUtil.isNotBlank(hasBind.getOpenIds())) { + List<String> openIds = StrUtil.split(hasBind.getOpenIds(), ','); + openIds.remove(code); + + sysUsersService.modifyUserOpenId(CollUtil.join(openIds, ","), hasBind.getSuId()); + } + } + String token=ApiUserLoginInterceptor.resolveToken(request,privateKey); + LocalCache.remove(token); + return AjaxResult.buildSuccessInstance("退出成功"); + } + @ApiOperation(value = "员工列表", notes = "员工列表") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = BeauticianVo.class) diff --git a/zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java b/zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java index a06332d..a919a3e 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java +++ b/zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java @@ -20,6 +20,16 @@ @NotBlank(message = "用户名或密码错误") private String password; + private String openId; + + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + } + public String getUsername() { return username; } diff --git a/zq-erp/src/main/java/com/matrix/system/app/dto/RankingDto.java b/zq-erp/src/main/java/com/matrix/system/app/dto/RankingDto.java index 3c3d788..428491e 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/dto/RankingDto.java +++ b/zq-erp/src/main/java/com/matrix/system/app/dto/RankingDto.java @@ -18,11 +18,12 @@ public static final String DAY = "1"; public static final String MONTH = "2"; public static final String YEAR = "3"; + public static final String WEEK = "4"; @ApiModelProperty(value = "数据类型 1-销售 2-消耗", example = "1") private String dataType; - @ApiModelProperty(value = "排行榜类型 1-日榜 2-月榜 3-年榜", example = "1") + @ApiModelProperty(value = "排行榜类型 1-日榜 2-月榜 3-年榜 4-周榜", example = "1") private String type; public String getDataType() { diff --git a/zq-erp/src/main/java/com/matrix/system/app/dto/SettingDto.java b/zq-erp/src/main/java/com/matrix/system/app/dto/SettingDto.java new file mode 100644 index 0000000..76865f9 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/app/dto/SettingDto.java @@ -0,0 +1,13 @@ +package com.matrix.system.app.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "SettingDto", description = "根据code获取配置参数接收类") +public class SettingDto { + + @ApiModelProperty(value = "code", example = "1") + private String code; +} diff --git a/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java b/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java index c9b6e8b..6fb3473 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java +++ b/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; import java.util.Date; /** @@ -25,6 +26,9 @@ @ApiModelProperty(value = "套餐来源,转让,购买") private String source; + + @ApiModelProperty(value = "划扣金额") + private BigDecimal price; @ApiModelProperty(value = "时长") private Integer timeLength; @@ -149,4 +153,12 @@ public void setBalance(Double balance) { this.balance = balance; } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } } diff --git a/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java b/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java index 67df2c9..fb43859 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java +++ b/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -36,6 +37,9 @@ @ApiModelProperty(value = "若套餐为任选套餐 则判断是否无限次 Y是 N否") private String isInfinite; + + @ApiModelProperty(value = "来源") + private String source; @ApiModelProperty(value = "套餐内产品") List<ServiceProjVo> proj; @@ -150,4 +154,12 @@ public void setStatus(String status) { this.status = status; } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } } diff --git a/zq-erp/src/main/java/com/matrix/system/app/vo/VipInfoVo.java b/zq-erp/src/main/java/com/matrix/system/app/vo/VipInfoVo.java index 325c469..1934aaf 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/vo/VipInfoVo.java +++ b/zq-erp/src/main/java/com/matrix/system/app/vo/VipInfoVo.java @@ -42,6 +42,16 @@ @ApiModelProperty(value = "累计消费") private BigDecimal totalShopping; + @ApiModelProperty(value = "欠款") + private BigDecimal arrears; + + public BigDecimal getArrears() { + return arrears; + } + + public void setArrears(BigDecimal arrears) { + this.arrears = arrears; + } public String getPhoto() { return photo; diff --git a/zq-erp/src/main/java/com/matrix/system/common/bean/SysCompany.java b/zq-erp/src/main/java/com/matrix/system/common/bean/SysCompany.java index 875c420..4b9e6703 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/bean/SysCompany.java +++ b/zq-erp/src/main/java/com/matrix/system/common/bean/SysCompany.java @@ -134,8 +134,16 @@ private String comPlats; - - + + private String comCode; + + public String getComCode() { + return comCode; + } + + public void setComCode(String comCode) { + this.comCode = comCode; + } public Long getComId() { return comId; @@ -333,7 +341,7 @@ public void setComPlats(String comPlats) { this.comPlats=comPlats; } - + @Override public String toString() { diff --git a/zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java b/zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java index dcadb31..a68a8d5 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java +++ b/zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java @@ -288,6 +288,16 @@ @Extend private SysCompany company; + private String openIds; + + public String getOpenIds() { + return openIds; + } + + public void setOpenIds(String openIds) { + this.openIds = openIds; + } + public String getAllCustomer() { return allCustomer; } diff --git a/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java b/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java index 846a5d8..87a5736 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java +++ b/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java @@ -606,7 +606,14 @@ */ public static final String WX_ORDER_NOTICE_DINGDING_TOKEN = "wxOrderNoticeDingdingToken"; - + /** + * 管理端小程序appid + */ + public static final String MINI_PROGRAM_MANAGER_APP_ID = "xcx_manager_appid"; + /** + * 管理端小程序secret + */ + public static final String MINI_PROGRAM_MANAGER_SECRET = "xcx_manager_secret"; diff --git a/zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java b/zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java index 0d9a4cb..c72524b 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java +++ b/zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java @@ -41,4 +41,5 @@ public SysRolePwoerFn selectForUpdate(Long rpfId); + int deleteByFns(@Param("companyId") Long comId, @Param("list") List<String> deletedFn); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java b/zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java index fcb8f9a..7d3181a 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java +++ b/zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java @@ -125,4 +125,7 @@ public List<AppVersion> selectAppVersion(); + SysUsers selectUserByOpenId(@Param("openId") String openId, @Param("companyId") Long companyId); + + int updateUserOpenId(@Param("openId") String openId, @Param("suId") Long suId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java b/zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java index 773e107..3749554 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java +++ b/zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java @@ -122,7 +122,7 @@ List<SysCompany> company=sysCompanyService.findByModel(null); Map<String, SysCompany> companyMap=new HashMap<>(); for (SysCompany sysCompany : company) { - companyMap.put(sysCompany.getComWebUrl(), sysCompany); + companyMap.put(sysCompany.getComCode(), sysCompany); } LocalCache.save("companyMap", companyMap); } diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java b/zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java index b41f466..ec9d7c5 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java +++ b/zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java @@ -173,4 +173,7 @@ public List<AppVersion> findAppVersion(); + SysUsers findByOpenId(String openId, Long companyId); + + int modifyUserOpenId(String openId, Long suId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java index da1be03..bb496c6 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java @@ -1,250 +1,300 @@ -package com.matrix.system.common.service.impl; - -import com.matrix.core.constance.MatrixConstance; -import com.matrix.core.constance.SystemErrorCode; -import com.matrix.core.exception.GlobleException; -import com.matrix.core.pojo.PaginationVO; -import com.matrix.core.tools.ModelUtils; -import com.matrix.core.tools.StringUtils; -import com.matrix.core.tools.WebUtil; -import com.matrix.system.common.bean.*; -import com.matrix.system.common.dao.SysCompanyDao; -import com.matrix.system.common.dao.SysRoleDao; -import com.matrix.system.common.dao.SysRolePwoerFnDao; -import com.matrix.system.common.service.SysCompanyService; -import com.matrix.system.hive.bean.SysShopInfo; -import com.matrix.system.hive.bean.Warehouse; -import com.matrix.system.hive.dao.SysShopInfoDao; -import com.matrix.system.hive.dao.WarehouseDao; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * 公司管理 - * - * @author JIANGYOUYAO - * @email 935090232@qq.com - * @date Dec 11, 2017 - */ -@Service -public class SysCompanyServiceImpl implements SysCompanyService { - - @Autowired - private SysCompanyDao sysCompanyDao; - @Autowired - private SysRoleDao sysRoleDao; - @Autowired - private SysRolePwoerFnDao rolePwoerFnDao; - - @Autowired - private SysShopInfoDao shopInfoDao; - - - @Autowired - private InitCustomerDataDictionaryService initCustomerDataDictionaryService; - - - @Autowired - private InitShoppingGoodsCategoryService initShoppingGoodsCategoryService; - - - @Autowired - private InitRolePowerService initRolePowerService; - - @Autowired - private InitGoodsTypeService initGoodsTypeService; - - @Autowired - private InitShopProductCateService initShopProductCateService; - - @Autowired - private InitBusParameterSettingService initBusParameterSettingService; - - - @Transactional - @Override - public int add(SysCompany sysCompany) { - SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); - sysCompany.setCreateBy(user.getSuName()); - sysCompany.setUpdateBy(user.getSuName()); - int i= sysCompanyDao.insert(sysCompany); - SysShopInfo zbShop= addZbShop(sysCompany); - initCustomerDataDictionaryService.initCustomerDataDictionary(sysCompany); - initShoppingGoodsCategoryService.initShoppingGoodsCategory(sysCompany,zbShop); - initRolePowerService.initRolePower(sysCompany); - initGoodsTypeService.initRolePower(sysCompany); - initShopProductCateService.initShopProductCate(sysCompany); - initBusParameterSettingService.initBusParameterSetting(sysCompany); - initBusParameterSettingService.initBusParameterFenxiaoSetting(sysCompany); - - return i; - - } - - - @Autowired - private WarehouseDao warehouseDao; - /** - * 为新公司创建一个总部 - * @param sysCompany - */ - private SysShopInfo addZbShop(SysCompany sysCompany) { - SysShopInfo zbShopInfo=new SysShopInfo(); - zbShopInfo.setShopType(SysShopInfo.SHOP_TYPE_ZONGBU); - zbShopInfo.setShopName(sysCompany.getComName()+"(总部)"); - zbShopInfo.setCompanyId(sysCompany.getComId()); - zbShopInfo.setShopTel(sysCompany.getComTel()); - zbShopInfo.setShopShortName("总部"); - zbShopInfo.setIsOpenNet(SysShopInfo.CLOSE_NET); - zbShopInfo.setShopNo(StringUtils.getRandomString(10)); - shopInfoDao.insert(zbShopInfo); - - //新增一个总部仓库 - Warehouse warehouse=new Warehouse(); - warehouse.setCompanyId(sysCompany.getComId()); - warehouse.setName("总部仓库"); - warehouse.setShopId(zbShopInfo.getId()); - warehouse.setSort("1"); - warehouseDao.insert(warehouse); - return zbShopInfo; - } - - @Transactional(rollbackFor = Exception.class) - @Override - public int modifyByMap(SysCompany oldSysCompany, SysCompany newSysCompany) { - SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); - newSysCompany.setUpdateBy(user.getSuName()); - - updatePower(newSysCompany); - Map<String, Object> modifyMap = null; - try { - if (!ModelUtils.isModified(oldSysCompany, newSysCompany)) { - return MatrixConstance.DML_SUCCESSS; - } - - modifyMap = ModelUtils.comparePojo2Map(oldSysCompany, newSysCompany); - } catch (Exception e) { - throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL, e, newSysCompany.getComName()); - } - if (modifyMap.size() > 0) { - modifyMap.put("comId", oldSysCompany.getComId()); - return sysCompanyDao.updateByMap(modifyMap); - } - return MatrixConstance.DML_SUCCESSS; - } - - /** - * 更新公司员工权限 - * - * @author JIANGYOUYAO - * @email 935090232@qq.com - * @date 2017年12月5日 - * @param newSysCompany - */ - private void updatePower(SysCompany newSysCompany) { - List<String> oldFunctions = null; - String functions = sysCompanyDao.selectById(newSysCompany.getComId()).getComFunctions(); - if (functions == null || functions.equals("")) { - oldFunctions = new ArrayList<>(); - } else { - oldFunctions = StringUtils - .strToCollToString(sysCompanyDao.selectById(newSysCompany.getComId()).getComFunctions(), ","); - } - List<String> newFunctions = new ArrayList<>(); - if (StringUtils.isNotBlank(newSysCompany.getComFunctions())) { - newFunctions = StringUtils.strToCollToString(newSysCompany.getComFunctions(), ","); - } - - for (String old : oldFunctions) { - // 如果新权限中不包含这个老的功能,则要更新改企业下所有的角色权限 - if (!newFunctions.contains(old)) { - SysRole role = new SysRole(); - role.setCompanyId(newSysCompany.getComId()); - List<SysRole> roles = sysRoleDao.selectByModel(role); - // 获取该公司下所有的权限信息 - List<SysRolePwoerFn> compalyRolePwoer = new ArrayList<>(); - for (SysRole tempRole : roles) { - SysRolePwoerFn r = new SysRolePwoerFn(); - r.setRoleId(tempRole.getRoleId()); - compalyRolePwoer.addAll(rolePwoerFnDao.selectByModel(r)); - } - // 记录要删除的id - List<String> delRolePwoer = new ArrayList<>(); - for (SysRolePwoerFn rolePwoer : compalyRolePwoer) { - // 如果有一个老权限则删除这个权限 - if (rolePwoer.getFnId() != null && rolePwoer.getFnId().equals(old)) { - delRolePwoer.add(rolePwoer.getRpfId()+""); - } - } - // 如果获取到了就删除 - if (!delRolePwoer.isEmpty()) { - rolePwoerFnDao.deleteByIds(delRolePwoer); - } - } - } - } - - @Override - public int modifyByModel(SysCompany sysCompany) { - - return sysCompanyDao.updateByModel(sysCompany); - - } - - @Override - public int remove(List<String> list) { - - return sysCompanyDao.deleteByIds(list); - - } - - @Override - public int removeById(String comId) { - - return sysCompanyDao.deleteById(Long.parseLong(comId)); - - } - - @Override - public int removeByModel(SysCompany sysCompany) { - - return sysCompanyDao.deleteByModel(sysCompany); - - } - - @Override - public List<SysCompany> findInPage(SysCompany sysCompany, PaginationVO pageVo) { - - return sysCompanyDao.selectInPage(sysCompany, pageVo); - - } - - @Override - public List<SysCompany> findByModel(SysCompany sysCompany) { - - return sysCompanyDao.selectByModel(sysCompany); - - } - - @Override - public int findTotal(SysCompany sysCompany) { - - return sysCompanyDao.selectTotalRecord(sysCompany); - - } - - @Override - public SysCompany findById(String comId) { - - return sysCompanyDao.selectById(Long.parseLong(comId)); - - } - - - +package com.matrix.system.common.service.impl; + +import cn.hutool.crypto.SecureUtil; +import cn.hutool.json.JSONUtil; +import com.matrix.core.constance.MatrixConstance; +import com.matrix.core.constance.SystemErrorCode; +import com.matrix.core.exception.GlobleException; +import com.matrix.core.pojo.PaginationVO; +import com.matrix.core.tools.LogUtil; +import com.matrix.core.tools.ModelUtils; +import com.matrix.core.tools.StringUtils; +import com.matrix.core.tools.WebUtil; +import com.matrix.system.app.authority.AppAuthorityManager; +import com.matrix.system.common.authority.DefaultAuthorityManager; +import com.matrix.system.common.bean.SysCompany; +import com.matrix.system.common.bean.SysRole; +import com.matrix.system.common.bean.SysRolePwoerFn; +import com.matrix.system.common.bean.SysUsers; +import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.common.dao.SysCompanyDao; +import com.matrix.system.common.dao.SysRoleDao; +import com.matrix.system.common.dao.SysRolePwoerFnDao; +import com.matrix.system.common.init.LocalCache; +import com.matrix.system.common.service.SysCompanyService; +import com.matrix.system.common.service.SysUsersService; +import com.matrix.system.hive.bean.SysShopInfo; +import com.matrix.system.hive.bean.Warehouse; +import com.matrix.system.hive.dao.SysShopInfoDao; +import com.matrix.system.hive.dao.WarehouseDao; +import com.matrix.system.hive.plugin.util.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 公司管理 + * + * @author JIANGYOUYAO + * @email 935090232@qq.com + * @date Dec 11, 2017 + */ +@Service +public class SysCompanyServiceImpl implements SysCompanyService { + + @Autowired + private SysCompanyDao sysCompanyDao; + @Autowired + private SysRoleDao sysRoleDao; + @Autowired + private SysRolePwoerFnDao rolePwoerFnDao; + + @Autowired + private SysShopInfoDao shopInfoDao; + + + @Autowired + private InitCustomerDataDictionaryService initCustomerDataDictionaryService; + + + @Autowired + private InitShoppingGoodsCategoryService initShoppingGoodsCategoryService; + + + @Autowired + private InitRolePowerService initRolePowerService; + + @Autowired + private InitGoodsTypeService initGoodsTypeService; + + @Autowired + private InitShopProductCateService initShopProductCateService; + + @Autowired + private InitBusParameterSettingService initBusParameterSettingService; + + + @Transactional + @Override + public int add(SysCompany sysCompany) { + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); + sysCompany.setCreateBy(user.getSuName()); + sysCompany.setUpdateBy(user.getSuName()); + int i = sysCompanyDao.insert(sysCompany); + SysShopInfo zbShop = addZbShop(sysCompany); + initCustomerDataDictionaryService.initCustomerDataDictionary(sysCompany); + initShoppingGoodsCategoryService.initShoppingGoodsCategory(sysCompany, zbShop); + initRolePowerService.initRolePower(sysCompany); + initGoodsTypeService.initRolePower(sysCompany); + initShopProductCateService.initShopProductCate(sysCompany); + initBusParameterSettingService.initBusParameterSetting(sysCompany); + initBusParameterSettingService.initBusParameterFenxiaoSetting(sysCompany); + + return i; + + } + + + @Autowired + private WarehouseDao warehouseDao; + + /** + * 为新公司创建一个总部 + * + * @param sysCompany + */ + private SysShopInfo addZbShop(SysCompany sysCompany) { + SysShopInfo zbShopInfo = new SysShopInfo(); + zbShopInfo.setShopType(SysShopInfo.SHOP_TYPE_ZONGBU); + zbShopInfo.setShopName(sysCompany.getComName() + "(总部)"); + zbShopInfo.setCompanyId(sysCompany.getComId()); + zbShopInfo.setShopTel(sysCompany.getComTel()); + zbShopInfo.setShopShortName("总部"); + zbShopInfo.setIsOpenNet(SysShopInfo.CLOSE_NET); + zbShopInfo.setShopNo(StringUtils.getRandomString(10)); + shopInfoDao.insert(zbShopInfo); + + //新增一个总部仓库 + Warehouse warehouse = new Warehouse(); + warehouse.setCompanyId(sysCompany.getComId()); + warehouse.setName("总部仓库"); + warehouse.setShopId(zbShopInfo.getId()); + warehouse.setSort("1"); + warehouseDao.insert(warehouse); + return zbShopInfo; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public int modifyByMap(SysCompany oldSysCompany, SysCompany newSysCompany) { + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); + newSysCompany.setUpdateBy(user.getSuName()); + + updatePower(newSysCompany); + Map<String, Object> modifyMap = null; + try { + if (!ModelUtils.isModified(oldSysCompany, newSysCompany)) { + return MatrixConstance.DML_SUCCESSS; + } + + modifyMap = ModelUtils.comparePojo2Map(oldSysCompany, newSysCompany); + } catch (Exception e) { + throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL, e, newSysCompany.getComName()); + } + if (modifyMap.size() > 0) { + modifyMap.put("comId", oldSysCompany.getComId()); + return sysCompanyDao.updateByMap(modifyMap); + } + return MatrixConstance.DML_SUCCESSS; + } + + /** + * 更新公司员工权限 + * + * @param newSysCompany + * @author JIANGYOUYAO + * @email 935090232@qq.com + * @date 2017年12月5日 + */ + private void updatePower(SysCompany newSysCompany) { + List<String> oldFunctions = null; + String functions = sysCompanyDao.selectById(newSysCompany.getComId()).getComFunctions(); + if (functions == null || functions.equals("")) { + oldFunctions = new ArrayList<>(); + } else { + oldFunctions = StringUtils + .strToCollToString(sysCompanyDao.selectById(newSysCompany.getComId()).getComFunctions(), ","); + } + List<String> newFunctions = new ArrayList<>(); + if (StringUtils.isNotBlank(newSysCompany.getComFunctions())) { + newFunctions = StringUtils.strToCollToString(newSysCompany.getComFunctions(), ","); + } + + Collections.sort(newFunctions); + Collections.sort(oldFunctions); + if (Objects.equals(JSONUtil.toJsonStr(newFunctions), JSONUtil.toJsonStr(oldFunctions))) { + //没有更新的权限 + return; + } + + List<String> finalNewFunctions = newFunctions; + List<String> deletedFn = oldFunctions.stream().map(old -> { + if (finalNewFunctions.stream().noneMatch(newFn -> Objects.equals(newFn, old))) { + return old; + } else { + return ""; + } + }).filter(item->StringUtils.isNotBlank(item)).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(deletedFn)){ + rolePwoerFnDao.deleteByFns(newSysCompany.getComId(),deletedFn); + //有更新权限清空缓存 + SysUsers sysUsers = new SysUsers(); + sysUsers.setCompanyId(newSysCompany.getComId()); + sysUsers.setSuValid(AppConstance.RECORD_VALID); + List<SysUsers> users = sysUsersService.findByModel(sysUsers); + users.forEach(user -> { + String userKey = SecureUtil.md5(user.getSuId() + ""); + LocalCache.remove(DefaultAuthorityManager.USER_POWER_REDISKEY_PC + userKey); + LocalCache.remove(AppAuthorityManager.USER_POWER_REDISKEY_APP + userKey); + }); + } + + + +/* for (String old : oldFunctions) { + // 如果新权限中不包含这个老的功能,则要更新改企业下所有的角色权限 + if (!newFunctions.contains(old)) { + SysRole role = new SysRole(); + role.setCompanyId(newSysCompany.getComId()); + List<SysRole> roles = sysRoleDao.selectByModel(role); + // 获取该公司下所有的权限信息 + List<SysRolePwoerFn> compalyRolePwoer = new ArrayList<>(); + for (SysRole tempRole : roles) { + SysRolePwoerFn r = new SysRolePwoerFn(); + r.setRoleId(tempRole.getRoleId()); + compalyRolePwoer.addAll(rolePwoerFnDao.selectByModel(r)); + } + // 记录要删除的id + List<String> delRolePwoer = new ArrayList<>(); + for (SysRolePwoerFn rolePwoer : compalyRolePwoer) { + // 如果有一个老权限则删除这个权限 + if (rolePwoer.getFnId() != null && rolePwoer.getFnId().equals(old)) { + delRolePwoer.add(rolePwoer.getRpfId() + ""); + } + } + // 如果获取到了就删除 + if (!delRolePwoer.isEmpty()) { + rolePwoerFnDao.deleteByIds(delRolePwoer); + } + } + }*/ + + + + } + + @Autowired + SysUsersService sysUsersService; + + @Override + public int modifyByModel(SysCompany sysCompany) { + + return sysCompanyDao.updateByModel(sysCompany); + + } + + @Override + public int remove(List<String> list) { + + return sysCompanyDao.deleteByIds(list); + + } + + @Override + public int removeById(String comId) { + + return sysCompanyDao.deleteById(Long.parseLong(comId)); + + } + + @Override + public int removeByModel(SysCompany sysCompany) { + + return sysCompanyDao.deleteByModel(sysCompany); + + } + + @Override + public List<SysCompany> findInPage(SysCompany sysCompany, PaginationVO pageVo) { + + return sysCompanyDao.selectInPage(sysCompany, pageVo); + + } + + @Override + public List<SysCompany> findByModel(SysCompany sysCompany) { + + return sysCompanyDao.selectByModel(sysCompany); + + } + + @Override + public int findTotal(SysCompany sysCompany) { + + return sysCompanyDao.selectTotalRecord(sysCompany); + + } + + @Override + public SysCompany findById(String comId) { + + return sysCompanyDao.selectById(Long.parseLong(comId)); + + } + + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java index 3771598..2d14f86 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java @@ -270,4 +270,14 @@ public List<AppVersion> findAppVersion() { return sysUsersDao.selectAppVersion(); } + + @Override + public SysUsers findByOpenId(String openId, Long companyId) { + return sysUsersDao.selectUserByOpenId(openId, companyId); + } + + @Override + public int modifyUserOpenId(String openId, Long suId) { + return sysUsersDao.updateUserOpenId(openId, suId); + } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/common/tools/DataAuthUtil.java b/zq-erp/src/main/java/com/matrix/system/common/tools/DataAuthUtil.java index 9e0a932..60dd23f 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/tools/DataAuthUtil.java +++ b/zq-erp/src/main/java/com/matrix/system/common/tools/DataAuthUtil.java @@ -20,7 +20,7 @@ */ public static boolean hasAllShopAuth() { SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); - return user.getShopRole().equals(Dictionary.FLAG_YES_Y) || user.getSuUserType().equals(AppConstance.USER_TYPE_ADMIN); + return Dictionary.FLAG_YES_Y.equals(user.getShopRole()) || AppConstance.USER_TYPE_ADMIN.equals(user.getSuUserType()); } @@ -31,7 +31,7 @@ */ public static boolean hasAllCustomerAuth() { SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); - return user.getShopRole().equals(Dictionary.FLAG_YES_Y) || user.getSuUserType().equals(AppConstance.USER_TYPE_ADMIN); + return Dictionary.FLAG_YES_Y.equals(user.getShopRole()) || AppConstance.USER_TYPE_ADMIN.equals(user.getSuUserType()); } } diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java index a60adcd..68cd634 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java @@ -239,7 +239,7 @@ public @ResponseBody ModelAndView printOrder(SysOrder order) throws GlobleException { ModelAndView mv = new ModelAndView("admin/hive/beautySalon/print-order"); - SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + SysUsers user = getMe(); String comRegisterCode = companyDao.selectById(user.getCompanyId()).getComRegisterCode(); if (StringUtils.isNotBlank(comRegisterCode)) { mv.addObject("page", comRegisterCode); diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java index 86db596..f2e5c36 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java @@ -1,5 +1,6 @@ package com.matrix.system.hive.action; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.matrix.core.anotations.RemoveRequestToken; @@ -26,17 +27,16 @@ import com.matrix.system.constance.Dictionary; import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.*; +import com.matrix.system.hive.dto.ServiceOrderTimeDto; import com.matrix.system.hive.service.*; +import com.matrix.system.hive.vo.ServiceOrderInfoVo; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; @@ -143,6 +143,20 @@ result.setStatus(AjaxResult.STATUS_SUCCESS); return result; + } + + /** + * 根据id查询服务单简单信息 + */ + @RequestMapping(value = "/findServiceOrderInfoVo/{id}") + public @ResponseBody + AjaxResult findServiceOrderInfoVo(@PathVariable Long id) { + // 获取服务单信息 + SysProjServices projServices = sysProjServicesService.findById(id); + + ServiceOrderInfoVo serviceOrderInfoVo= BeanUtil.copyProperties(projServices,ServiceOrderInfoVo.class); + + return AjaxResult.buildSuccessInstance(serviceOrderInfoVo); } @@ -429,13 +443,12 @@ */ @RequestMapping(value = "/updateOrderTime") public @ResponseBody - AjaxResult updateOrderTime(SysProjServices serviceQuery) { - SysProjServices services = sysProjServicesDao.selectById(serviceQuery.getId()); - sysProjServicesDao.updateOrderTime(serviceQuery.getConsumeTime(), serviceQuery.getId()); + AjaxResult updateOrderTime(@RequestBody ServiceOrderTimeDto serviceOrderTimeDto) { + sysProjServicesDao.updateOrderTime(serviceOrderTimeDto); // 更新业绩时间 AchieveNew achieveNew = new AchieveNew(); - achieveNew.setServiceOrderId(serviceQuery.getId()); - achieveNew.setDatatime(serviceQuery.getConsumeTime()); + achieveNew.setServiceOrderId(serviceOrderTimeDto.getId()); + achieveNew.setDatatime(serviceOrderTimeDto.getConsumeTime()); achieveNewService.modifyAchieveTime(achieveNew); return new AjaxResult(AjaxResult.STATUS_SUCCESS, "修改成功"); } diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java index 9edf94f..fed9f78 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java @@ -261,6 +261,7 @@ vips.get(0).setLabels(sysVipLabelDao.selectByVipId(vips.get(0).getId())); vips.get(0).setAge(DateUtil.getAgeForBirthDay(vips.get(0).getBirthday1())); vips.get(0).setBalance(moneyCardUseDao.selectVipCardTotalMoney(vips.get(0).getId())); + vips.get(0).setArrears(sysOrderService.findVipArrearsByVipId(vips.get(0).getId())); AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, vips, 0); return result; } else { diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java index 789b879..7eae13c 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java @@ -449,6 +449,19 @@ */ private String payMethods; + /** + * 是否合作项目 + */ + private Integer isCooperate; + + public Integer getIsCooperate() { + return isCooperate; + } + + public void setIsCooperate(Integer isCooperate) { + this.isCooperate = isCooperate; + } + public String getAchieveRuleName() { return achieveRuleName; } diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java index 72f4119..09224d4 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java @@ -9,6 +9,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -437,8 +438,7 @@ private String name; + private BigDecimal arrears; - - } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java index 482ad02..ec7c010 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java @@ -10,6 +10,7 @@ import com.matrix.system.hive.bean.AchieveNew; import com.matrix.system.hive.dto.AchieveNewStatisticsDto; import com.matrix.system.hive.vo.AchieveNewStatisticsVo; +import com.matrix.system.hive.vo.DailyBeautyListVo; import org.apache.ibatis.annotations.Param; import java.util.ArrayList; @@ -91,4 +92,11 @@ IPage<AchieveNewStatisticsVo> achieveNewStatistics(Page<AchieveNewStatisticsVo> page, @Param("record")AchieveNewStatisticsDto queryDto); void setPayMethod(@Param("paymethod") String paymethod, @Param("list") ArrayList<Long> ids); + + List<RankingVo> selectNumOfPeopleAchieveRanking(@Param("record") AchieveNew achieveNew); + + List<DailyBeautyListVo> selectDailyBeautyList(@Param("record") AchieveNew achieveNew, @Param("pageVo") PaginationVO pageVo); + int selectDailyBeautyListTotal(@Param("record") AchieveNew achieveNew); + + String selectPlInfoByVipIdAndDate(@Param("datatime") Date datatime, @Param("vipId") Long vipId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderDao.java index c052f28..22ef160 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderDao.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderDao.java @@ -9,6 +9,7 @@ import com.matrix.system.shopXcx.api.vo.ErpOrderDetailVo; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -54,4 +55,6 @@ List<ErpOrderDetailVo> selectErpOrderList(ErpOrderListDto erpOrderListDto); ErpOrderDetailVo findUserOrderById(Long orderId); + + BigDecimal selectArrearsByVipId(Long vipId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java index 4266fb8..588612c 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java @@ -4,6 +4,7 @@ import com.matrix.system.app.dto.ServiceOrderListDto; import com.matrix.system.app.vo.ServiceOrderListVo; import com.matrix.system.hive.bean.SysProjServices; +import com.matrix.system.hive.dto.ServiceOrderTimeDto; import com.matrix.system.shopXcx.api.dto.ErpServiceOrderListDto; import com.matrix.system.shopXcx.api.vo.ErpServiceOrderListVo; import org.apache.ibatis.annotations.Param; @@ -36,7 +37,7 @@ public SysProjServices selectById(Long id); - public void updateOrderTime(@Param("consumeTime") Date createTime, @Param("id") Long id); + public void updateOrderTime(@Param("serviceOrderTimeDto") ServiceOrderTimeDto serviceOrderTimeDto); List<ServiceOrderListVo> selectApiServiceOrderListInPage(@Param("record") ServiceOrderListDto serviceOrderListDto, @Param("pageVo") PaginationVO pageVo); diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java index 747dc87..fd8fba7 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** @@ -214,4 +215,8 @@ int unbundlingSaleMan(Long userId); int bindingRecommend(@Param("recommendId") Long recommendId,@Param("userId") Long userId); + + List<Map<String, Object>> selectVipArrearsStatistics(@Param("record") SysVipInfo sysVipInfo, @Param("pageVo") PaginationVO pageVo); + + Integer selectVipArrearsStatisticsTotal(@Param("record") SysVipInfo sysVipInfo); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/ServiceOrderTimeDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/ServiceOrderTimeDto.java new file mode 100644 index 0000000..bedaf81 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/ServiceOrderTimeDto.java @@ -0,0 +1,34 @@ +package com.matrix.system.hive.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.matrix.core.tools.DateUtil; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class ServiceOrderTimeDto { + + /** + * 服务单id + */ + private Long id; + /** + * 预约时间 + */ + @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM) + private Date yyTime; + + /** + * 订单创建时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + private Date createTime; + /** + * 订单划扣时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + private Date consumeTime; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java index bdf9228..0698dac 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java @@ -6,6 +6,7 @@ import com.matrix.system.hive.bean.SysOrder; import com.matrix.system.hive.bean.SysProjServices; import com.matrix.system.hive.plugin.util.BaseServices; +import com.matrix.system.hive.vo.DailyBeautyListVo; import java.util.List; import java.util.Map; @@ -117,4 +118,7 @@ public List<AchieveNew> findOrderItemAchieve(Long orderid); + List<DailyBeautyListVo> findDailyBeautyList(AchieveNew achieveNew, PaginationVO pageVo); + int findDailyBeautyListTotal(AchieveNew achieveNew); + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java index 6e0e060..2be2912 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java @@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpSession; +import java.math.BigDecimal; import java.util.List; /** @@ -142,4 +143,6 @@ List<RankingVo> findApiShopAchieveRanking(SysOrder sysOrder); + BigDecimal findVipArrearsByVipId(Long vipId); + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java index dd21bc1..cd93e2d 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java @@ -14,6 +14,7 @@ import java.io.File; import java.io.IOException; import java.util.List; +import java.util.Map; /** * @@ -205,4 +206,8 @@ public int setToBeAnSalesman(Long userId,Long invitationId,long gradeId); SysVipInfo findByOpenId(String openId); + + List<Map<String, Object>> findVipArrearsStatistics(SysVipInfo sysVipInfo, PaginationVO pageVo); + + Integer findVipArrearsStatisticsTotal(SysVipInfo sysVipInfo); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java index afec062..f32259e 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java @@ -21,6 +21,7 @@ import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.hive.service.AchieveNewService; import com.matrix.system.hive.service.SysProjServicesService; +import com.matrix.system.hive.vo.DailyBeautyListVo; import com.matrix.system.hiveErp.pojo.AchieveRuleItem; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -174,8 +175,7 @@ boolean flag = projServicesService.skipServiceOrderStep(Dictionary.SALE_MAN_IS_CONSUME_ACHIEVE); - - + Set<Long> beautyIds = new HashSet<>(); for (SysBeauticianState beauticianState : beauticianStateList) { // 是否第一次计算改美疗师 boolean isFirst = true; @@ -222,13 +222,13 @@ // } } - List<AchieveNew> beautyList = achieveNewDao.selectBeautyManAchieveList(beauticianState.getStaffId(), projServices.getVipId(), new Date()); - if (CollUtil.isEmpty(beautyList)) { - achieveNew.setNumberOfPeople(1D / size); - } else { - achieveNew.setNumberOfPeople(1D / (size + beautyList.size())); - achieveNewDao.updateAchieveNumOfPeople(beautyList, achieveNew.getNumberOfPeople()); - } +// List<AchieveNew> beautyList = achieveNewDao.selectBeautyManAchieveList(beauticianState.getStaffId(), projServices.getVipId(), new Date()); +// if (CollUtil.isEmpty(beautyList)) { +// achieveNew.setNumberOfPeople(1D / size); +// } else { +// achieveNew.setNumberOfPeople(1D / (size + beautyList.size())); +// achieveNewDao.updateAchieveNumOfPeople(beautyList, achieveNew.getNumberOfPeople()); +// } achieveNew.setProjNum(1); if (StringUtils.isNotBlank(beauticianState.getExtract())) { @@ -244,11 +244,14 @@ achieveNew.setProjTime(beauticianState.getExcTime()); isFirst = false; } + + beautyIds.add(achieveNew.getBeaultId()); achieveNewList.add(achieveNew); } if (CollectionUtils.isNotEmpty(achieveNewList)) { achieveNewDao.batchInsert(achieveNewList); + achieveNumOfPeople(beautyIds, projServices.getVipId()); } } @@ -297,9 +300,33 @@ } } + /** + * + * 合并订单与服务单人头逻辑,即每一个客户对美疗师/顾问来说,每一天同一个客户只算一个人头。 + * 如若A给客户X下订单,并给客户X服务,对A来说只算一个人头 + */ + private void achieveNumOfPeople(Set<Long> beautyIds, Long vipId) { + for (Long userId : beautyIds) { + double num; + List<AchieveNew> achieveNewList = achieveNewDao.selectBeautyManAchieveList(userId, vipId, new Date()); + + if (CollUtil.isEmpty(achieveNewList)) { + num = 1D; + } else { + num = 1D / achieveNewList.size(); + } + + if (CollUtil.isNotEmpty(achieveNewList)) { + achieveNewDao.updateAchieveNumOfPeople(achieveNewList, num); + } + } + + } + @Override public void addAchaeveByOrder(SysOrder pageOrder) { List<AchieveNew> achieveNewList = new ArrayList<>(); + Set<Long> beautyIds = new HashSet<>(); if (CollectionUtils.isNotEmpty(pageOrder.getItems())) { for (SysOrderItem orderItem : pageOrder.getItems()) { @@ -309,13 +336,19 @@ if (achieveNew !=null && achieveNew.getGoodsCash()!=null) { buildAchieve(pageOrder, orderItem, achieveNew); achieveNewList.add(achieveNew); + + beautyIds.add(achieveNew.getBeaultId()); } } } } } + if (CollectionUtils.isNotEmpty(achieveNewList)) { achieveNewDao.batchInsert(achieveNewList); + if (!beautyIds.isEmpty()) { + achieveNumOfPeople(beautyIds, pageOrder.getVipId()); + } } } @@ -354,7 +387,7 @@ } // 设置顾问人头业绩 - saleAchieveNumOfPeople(achieveNew); +// saleAchieveNumOfPeople(achieveNew); achieveNew.setOrderType(Dictionary.ORDER_TYPE_SEAL); achieveNew.setOrderId(pageOrder.getId()); @@ -439,4 +472,21 @@ public List<AchieveNew> findOrderItemAchieve(Long orderId) { return achieveNewDao.selectOrderItemAchieveByOrderId(orderId); } + + @Override + public List<DailyBeautyListVo> findDailyBeautyList(AchieveNew achieveNew, PaginationVO pageVo) { + List<DailyBeautyListVo> list = achieveNewDao.selectDailyBeautyList(achieveNew, pageVo); + if (CollUtil.isNotEmpty(list)) { + for (DailyBeautyListVo item : list) { + String pl = achieveNewDao.selectPlInfoByVipIdAndDate(item.getDatatime(), item.getVipId()); + item.setProjInfo(pl); + } + } + return list; + } + + @Override + public int findDailyBeautyListTotal(AchieveNew achieveNew) { + return achieveNewDao.selectDailyBeautyListTotal(achieveNew); + } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java index f569ace..f9bc208 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java @@ -1853,4 +1853,9 @@ sysInstoreInfoService.check(instoreInfo); } + + @Override + public BigDecimal findVipArrearsByVipId(Long vipId) { + return sysOrderDao.selectArrearsByVipId(vipId); + } } diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java index 8980936..0515e39 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java @@ -79,6 +79,9 @@ @Autowired ScoreVipDetailService scoreVipDetailService; + @Autowired + private SysOrderDao sysOrderDao; + /** * 新增会员储值卡 @@ -440,7 +443,9 @@ @Override public com.matrix.system.app.vo.VipInfoVo findApiVipInfoById(Long id) { - return sysVipInfoDao.selectVipInfoById(id); + com.matrix.system.app.vo.VipInfoVo result = sysVipInfoDao.selectVipInfoById(id); + result.setArrears(sysOrderDao.selectArrearsByVipId(id)); + return result; } @Override @@ -669,5 +674,13 @@ } + @Override + public List<Map<String, Object>> findVipArrearsStatistics(SysVipInfo sysVipInfo, PaginationVO pageVo) { + return sysVipInfoDao.selectVipArrearsStatistics(sysVipInfo, pageVo); + } + @Override + public Integer findVipArrearsStatisticsTotal(SysVipInfo sysVipInfo) { + return sysVipInfoDao.selectVipArrearsStatisticsTotal(sysVipInfo); + } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java b/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java index 354a30d..9901970 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java @@ -272,5 +272,20 @@ } } + @RequestMapping(value = "/findDailyBeautyList") + @ResponseBody + public AjaxResult findDailyBeautyList(@RequestBody AchieveNew achieveNew) { + SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + achieveNew.setCompanyId(sysUsers.getCompanyId()); + if (!DataAuthUtil.hasAllShopAuth()) { + achieveNew.setShopId(sysUsers.getShopId()); + } + PaginationVO pageVo = new PaginationVO(); + + pageVo.setOffset(achieveNew.getOffset()); + pageVo.setLimit(achieveNew.getLimit()); + return AjaxResult.buildSuccessInstance(achieveNewService.findDailyBeautyList(achieveNew, pageVo), achieveNewService.findDailyBeautyListTotal(achieveNew)); + } + } diff --git a/zq-erp/src/main/java/com/matrix/system/hive/statistics/ProjUseStatisticsAction.java b/zq-erp/src/main/java/com/matrix/system/hive/statistics/ProjUseStatisticsAction.java index 955fba1..75a215f 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/statistics/ProjUseStatisticsAction.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/statistics/ProjUseStatisticsAction.java @@ -46,8 +46,8 @@ public void exportShowList( @RequestParam Map<String , Object> param, HttpServletResponse response) throws Exception { SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); String title = "项目剩余次数明细"; - String[] header = {"客户名", "服务名称", "到期日期", "剩余次数", "单价", "项目类型", "套餐类型", "是否使用完成", "备注", "来源", "订单号"}; - String[] column = {"VIP_NAME", "PROJ_NAME", "FAIL_TIME", "SURPLUS_COUNT", "PRICE", "TYPE_NAME", "type", "IS_OVER", "remark", "SOURCE", "ORDER_NO"}; + String[] header = {"客户名", "客户所属门店", "服务名称", "到期日期", "剩余次数", "单价", "项目类型", "套餐类型", "是否使用完成", "备注", "来源", "订单号"}; + String[] column = {"VIP_NAME", "SHOP_NAME", "PROJ_NAME", "FAIL_TIME", "SURPLUS_COUNT", "PRICE", "TYPE_NAME", "type", "IS_OVER", "remark", "SOURCE", "ORDER_NO"}; if(!DataAuthUtil.hasAllShopAuth()){ param.put("shopId", sysUsers.getShopId()); diff --git a/zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java b/zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java index 52abb4e..94aad6a 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java @@ -7,7 +7,9 @@ import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.tools.DataAuthUtil; import com.matrix.system.hive.bean.AchieveNew; +import com.matrix.system.hive.bean.SysVipInfo; import com.matrix.system.hive.service.AchieveNewService; +import com.matrix.system.hive.service.SysVipInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -29,6 +31,9 @@ @Autowired private AchieveNewService achieveNewService; + @Autowired + private SysVipInfoService sysVipInfoService; + @RequestMapping(value = "/vipConsumeStatistics") @ResponseBody public AjaxResult vipConsumeStatistics(AchieveNew achieveNew, PaginationVO pageVo) { @@ -40,4 +45,16 @@ int total = achieveNewService.findVipConsumeStatisticsTotal(achieveNew); return AjaxResult.buildSuccessInstance(list, total); } + + @RequestMapping(value = "/vipArrearsStatistics") + @ResponseBody + public AjaxResult vipArrearsStatistics(SysVipInfo sysVipInfo, PaginationVO pageVo) { + SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + if (!DataAuthUtil.hasAllShopAuth()) { + sysVipInfo.setShopId(sysUsers.getShopId()); + } + + int total = sysVipInfoService.findVipArrearsStatisticsTotal(sysVipInfo); + return AjaxResult.buildSuccessInstance(sysVipInfoService.findVipArrearsStatistics(sysVipInfo, pageVo), total); + } } diff --git a/zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java b/zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java new file mode 100644 index 0000000..37a969d --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java @@ -0,0 +1,50 @@ +package com.matrix.system.hive.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class DailyBeautyListVo { + + @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + private Date datatime; + + private String beautyName; + + private String vipName; + + private Long vipId; + + private int isAppoint; + + private String arrivalWay; + + private int orderCnt; + + private int arriveCnt; + + private String payMethods; + + private BigDecimal teamPay; + + private BigDecimal tcAndProjCash; + + private BigDecimal productCash; + + private BigDecimal cardCash; + + private BigDecimal cardPay; + + private BigDecimal cashPay; + + private BigDecimal consume; + + private Integer projCnt; + + private BigDecimal ticheng; + + private String projInfo; +} diff --git a/zq-erp/src/main/java/com/matrix/system/hive/vo/ServiceOrderInfoVo.java b/zq-erp/src/main/java/com/matrix/system/hive/vo/ServiceOrderInfoVo.java new file mode 100644 index 0000000..a43e901 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/hive/vo/ServiceOrderInfoVo.java @@ -0,0 +1,69 @@ +package com.matrix.system.hive.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.matrix.core.tools.DateUtil; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 简单服务单信息展示对象不含明细 + */ +@Data +public class ServiceOrderInfoVo { + + /** + * id + */ + private Long id; + + /** + * 编号 + */ + private String serviceNo; + + /** + * 服务单金额 + */ + private Double money; + /** + * 预约时间 + */ + @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM) + private Date yyTime; + + /** + * 订单创建时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + private Date createTime; + /** + * 订单划扣时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + private Date consumeTime; + + /** + * 开始时间 + */ + @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM) + private Date startTime; + /** + * 结束时间 + */ + @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM) + private Date endTime; + /** + * 超时时间 + */ + private String isOverTime; + + /** + * 服务状态 0.待预约 1.预约失败,2预约成功待处理,3需配料,4配料中,5配料完成,6,服务中,7服务完成 + */ + private String state; + + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java index 5befb86..e055e95 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java @@ -47,7 +47,22 @@ */ public String getXcxLoginUrl(String code,Long companyId) { String wechatLoginUrl = PropertiesUtil.getString(WECHAT_LOGIN_URL); + return String.format(wechatLoginUrl, getAppid(companyId), getSecret(companyId), code); + } + + /** + * 获取管理端小程序登录地址 + * + * @param code + * @return + */ + public String getManagerXcxLoginUrl(String code) { + String wechatLoginUrl = PropertiesUtil.getString(WECHAT_LOGIN_URL); + String appId = PropertiesUtil.getString(AppConstance.MINI_PROGRAM_MANAGER_APP_ID); + String secret = PropertiesUtil.getString(AppConstance.MINI_PROGRAM_MANAGER_SECRET); + + return String.format(wechatLoginUrl, appId, secret, code); } /** @@ -67,8 +82,6 @@ BusParameterSettings secret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_SECRET, companyId); return secret.getParamValue(); } - - /** * 清空token diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java index 0b0eaac..e07d511 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java @@ -2,6 +2,7 @@ import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.init.UserCacheManager; import com.matrix.component.tools.HttpCurlUtil; import com.matrix.core.pojo.AjaxResult; diff --git a/zq-erp/src/main/resources/config/application.properties b/zq-erp/src/main/resources/config/application.properties index c5f1bc5..ee23831 100644 --- a/zq-erp/src/main/resources/config/application.properties +++ b/zq-erp/src/main/resources/config/application.properties @@ -4,9 +4,13 @@ #线上测试环境 # -#spring.datasource.username=ct_test -#spring.datasource.password=123456 -#spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test_meidu?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 +spring.datasource.username=ct_test +spring.datasource.password=123456 +spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 + +#spring.datasource.username=hive +#spring.datasource.password=hive123!@# +#spring.datasource.url=jdbc:mysql://124.70.222.34/hive_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 #spring.datasource.username=xc_shop #spring.datasource.password=xc_shop123!@# @@ -17,9 +21,9 @@ #spring.datasource.password=hive123!@# #spring.datasource.url=jdbc:mysql://124.70.222.34/hive_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 -spring.datasource.username=meidu_data -spring.datasource.password=meidu_4321#&@ -spring.datasource.url=jdbc:mysql://47.111.134.136/db_meidu_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 +#spring.datasource.username=meidu_data +#spring.datasource.password=meidu_4321#&@ +#spring.datasource.url=jdbc:mysql://47.111.134.136/db_meidu_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 #spring.datasource.username=root diff --git a/zq-erp/src/main/resources/config/mdprd/system.properties b/zq-erp/src/main/resources/config/mdprd/system.properties index b601be1..30d25c6 100644 --- a/zq-erp/src/main/resources/config/mdprd/system.properties +++ b/zq-erp/src/main/resources/config/mdprd/system.properties @@ -59,7 +59,8 @@ wechar_login_url =https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code xcx_appid =wx3836ab3c1490ff29 xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47 - +xcx_manager_appid=wx2948b3b914a9722e +xcx_manager_secret=1685dfd99a43e213ed8be07870b898ba #微信支付调试开关 wx_pay_debug_onoff = false diff --git a/zq-erp/src/main/resources/config/prd/system.properties b/zq-erp/src/main/resources/config/prd/system.properties index 9290b39..475b515 100644 --- a/zq-erp/src/main/resources/config/prd/system.properties +++ b/zq-erp/src/main/resources/config/prd/system.properties @@ -59,7 +59,8 @@ wechar_login_url =https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code xcx_appid =wx3836ab3c1490ff29 xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47 - +xcx_manager_appid=wx2948b3b914a9722e +xcx_manager_secret=1685dfd99a43e213ed8be07870b898ba #微信支付调试开关 wx_pay_debug_onoff = false diff --git a/zq-erp/src/main/resources/config/system.properties b/zq-erp/src/main/resources/config/system.properties index 9355c08..e2c8614 100644 --- a/zq-erp/src/main/resources/config/system.properties +++ b/zq-erp/src/main/resources/config/system.properties @@ -51,6 +51,8 @@ wechar_login_url =https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code xcx_appid =wx5cc58f796224af61 xcx_secret =facea088aae414e5c2ee86b459887721 +xcx_manager_appid=wx2948b3b914a9722e +xcx_manager_secret=1685dfd99a43e213ed8be07870b898ba #公众号 gzh_appid=wx57e6335559bdbda6 diff --git a/zq-erp/src/main/resources/config/test/application.properties b/zq-erp/src/main/resources/config/test/application.properties index cc4b62c..cd48b66 100644 --- a/zq-erp/src/main/resources/config/test/application.properties +++ b/zq-erp/src/main/resources/config/test/application.properties @@ -6,7 +6,7 @@ spring.datasource.username=ct_test spring.datasource.password=123456 -spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test_meidu?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 +spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 #spring.datasource.username=chuhuan #spring.datasource.password=chuhuan diff --git a/zq-erp/src/main/resources/config/test/system.properties b/zq-erp/src/main/resources/config/test/system.properties index 2a201f8..3f4c0ac 100644 --- a/zq-erp/src/main/resources/config/test/system.properties +++ b/zq-erp/src/main/resources/config/test/system.properties @@ -48,6 +48,8 @@ wechar_login_url =https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code xcx_appid =wx5cc58f796224af61 xcx_secret =facea088aae414e5c2ee86b459887721 +xcx_manager_appid=wx2948b3b914a9722e +xcx_manager_secret=1685dfd99a43e213ed8be07870b898ba gzh_appid=wx57e6335559bdbda6 gzh_secret=ecb408af170e3890e6544290cad33760 diff --git a/zq-erp/src/main/resources/mybatis/mapper/common/SysCompanyDao.xml b/zq-erp/src/main/resources/mybatis/mapper/common/SysCompanyDao.xml index 6c01dba..5c612dd 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/common/SysCompanyDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/common/SysCompanyDao.xml @@ -231,6 +231,9 @@ <if test="_parameter.containsKey('comPlats')"> com_plats = #{comPlats}, </if> + <if test="_parameter.containsKey('comCode')"> + com_code = #{comCode}, + </if> </set> WHERE com_id=#{comId} </update> @@ -694,7 +697,8 @@ com_logo, com_valid, com_functions, - com_plats + com_plats, + com_code from sys_company where com_id=#{comId} </select> @@ -757,7 +761,8 @@ com_logo, com_valid, com_functions, - com_plats + com_plats, + com_code from sys_company <where> <if test="record!=null"> @@ -846,9 +851,13 @@ and com_functions = #{record.comFunctions} </if> <if - test="(record.comPlats!=null and record.comPlats!='') or (record.comPlats!='' and record.comPlats==0)"> + test="(record.comPlats!=null and record.comPlats!='') or (record.comPlats!='' and record.comPlats==0)"> and com_plats = #{record.comPlats} </if> + <if + test="(record.comCode!=null and record.comCode!='') or (record.comCode!='' and record.comCode==0)"> + and com_code = #{record.comCode} + </if> </if> </where> </select> diff --git a/zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml b/zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml index 3c5c8b8..a1b0ef2 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml @@ -150,10 +150,21 @@ </if> </where> </delete> - - - - <!-- 分页查询 --> + <delete id="deleteByFns"> + DELETE a + FROM + sys_role_pwoer_fn a , sys_role b + WHERE + a.role_id = b.role_id + and b.company_id=#{companyId} + and a.fn_id in <foreach collection="list" index="index" item="item" open="(" + separator="," close=")"> + #{item} + </foreach> + </delete> + + + <!-- 分页查询 --> <select id="selectInPage" resultMap="SysRolePwoerFnMap"> select rpf_id, diff --git a/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml b/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml index 615593d..5027633 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml @@ -486,6 +486,9 @@ <if test="signDate != null and signDate !='' "> sign_date = #{signDate} </if> + <if test="openIds != null and openIds !='' "> + open_ids = #{openIds} + </if> </set> WHERE su_id=#{suId} @@ -1328,4 +1331,19 @@ <select id="selectAppVersion" resultType="com.matrix.system.hive.bean.AppVersion"> select * from app_version </select> + + <select id="selectUserByOpenId" resultMap="SysUsersMap"> + select *, + (select GROUP_CONCAT(role_name separator ',') from sys_role where find_in_set(role_id,role_ids) ) roleName + from sys_users where find_in_set(#{openId}, open_ids) + <if test="companyId != null"> + and company_id=#{companyId} + </if> + </select> + + <update id="updateUserOpenId"> + update sys_users + set open_ids=#{openId} + where su_id=#{suId} + </update> </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml index 99190d7..0e05a28 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml @@ -989,6 +989,9 @@ <if test='record.t1 == "3" and record.datatime != null'> and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y') </if> + <if test='record.t1 == "4" and record.datatime != null'> + and date_format(datatime, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u') + </if> </where> group by a.shop_id order by amount desc, a.shop_id @@ -1020,6 +1023,9 @@ </if> <if test='record.t1 == "3" and record.datatime != null'> and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y') + </if> + <if test='record.t1 == "4" and record.datatime != null'> + and date_format(datatime, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u') </if> </where> group by a.beault_id @@ -1066,6 +1072,9 @@ <if test='record.type == "3" and record.datatime != null'> and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y') </if> + <if test='record.t1 == "4" and record.datatime != null'> + and date_format(datatime, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u') + </if> </where> group by b.su_id order by amount desc, b.su_id @@ -1092,6 +1101,9 @@ </if> <if test='record.t1 == "3" and record.datatime != null'> and date_format(a.create_time, '%Y') = date_format(#{record.datatime}, '%Y') + </if> + <if test='record.t1 == "4" and record.datatime != null'> + and date_format(a.create_time, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u') </if> </where> group by a.shop_id @@ -1193,4 +1205,171 @@ </update> + + <select id="selectNumOfPeopleAchieveRanking" resultType="com.matrix.system.app.vo.RankingVo"> + select + b.su_name name, + b.su_id id, + b.su_photo photo, + sum(number_of_people) amount, + c.shop_short_name shopName + from achieve_new a + inner join sys_users b on a.beault_id=b.su_id + left join sys_shop_info c on a.shop_id=c.ID + <where> + <if test="record.companyId != null"> + and a.company_id=#{record.companyId} + </if> + <if test="record.shopId != null"> + and a.shop_id=#{record.shopId} + </if> + <if test='record.t1 == "1" and record.datatime != null'> + and date_format(datatime, '%Y-%m-%d') = date_format(#{record.datatime}, '%Y-%m-%d') + </if> + <if test='record.t1 == "2" and record.datatime != null'> + and date_format(datatime, '%Y-%m') = date_format(#{record.datatime}, '%Y-%m') + </if> + <if test='record.t1 == "3" and record.datatime != null'> + and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y') + </if> + <if test='record.t1 == "4" and record.datatime != null'> + and date_format(datatime, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u') + </if> + </where> + group by a.beault_id + order by amount desc + </select> + + <select id="selectDailyBeautyList" resultType="com.matrix.system.hive.vo.DailyBeautyListVo"> + select + date_format(b.datatime, '%Y-%m-%d') datatime, + a.su_id, + a.su_name beautyName, + c.id vipId, + c.VIP_NAME, + c.arrival_way, + case when c.BEATUY_ID=a.su_id then 1 else 0 end isAppoint, + (select count(distinct date_format(n.datatime, '%Y-%m-%d')) from achieve_new n + where date_format(b.datatime, '%Y-%m') = date_format(n.datatime, '%Y-%m') and n.vip_id=c.ID + group by date_format(n.datatime, '%Y-%m'))arriveCnt, + (select count(1) from sys_order o where o.statu in ('欠款', '已付款') and o.VIP_ID=c.id) orderCnt, + (select group_concat(distinct q.pay_method) payMethod from sys_order p + inner join sys_order_flow q on p.ID=q.ORDER_ID + inner join achieve_new o on o.order_id=p.id + where date_format(pay_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') and o.beault_id=a.su_id and c.ID=q.vip_id and p.STATU in ('欠款', '已付款') + group by p.VIP_ID) payMethods, + (select sum(amount) from sys_order_flow x + inner join achieve_new y on x.order_id=y.order_id + where x.pay_method='团购' and date_format(x.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') + and y.beault_id=a.su_id and x.vip_id=c.id ) teamPay, + (select sum(m.ZK_PRICE) from sys_order_item m + inner join achieve_new n on n.ORDER_ID=m.order_id + where date_format(m.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') + and m.type in ('套餐', '项目') and n.beault_id=a.su_id) tcAndProjCash, + (select sum(m.ZK_PRICE) from sys_order_item m + inner join achieve_new n on n.ORDER_ID=m.order_id + where date_format(m.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') + and m.type in ('家居产品') and n.beault_id=a.su_id) productCash, + (select sum(m.ZK_PRICE) from sys_order_item m + inner join achieve_new n on n.ORDER_ID=m.order_id + where date_format(m.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') + and m.type in ('充值卡') and n.beault_id=a.su_id) cardCash, + (select sum(amount) from sys_order_flow x + inner join achieve_new y on x.order_id=y.order_id + where x.pay_method='储值卡' and date_format(x.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') + and y.beault_id=a.su_id and x.vip_id=c.id) cardPay, + (select sum(amount) from sys_order_flow x + inner join achieve_new y on x.order_id=y.order_id + where x.pay_method not in ('储值卡','欠款') and date_format(x.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') + and y.beault_id=a.su_id and x.vip_id=c.id) cashPay, + (select sum(e.goods_cash) from achieve_new e + inner join shopping_goods f on e.shopping_goods_id=f.id and f.is_cooperate=1 + where e.order_type='订单' and date_format(e.datatime, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') + and e.beault_id=a.su_id and e.vip_id=c.id) cooperateProj, + sum(proj_percentage) ticheng, + sum(IFNULL(free_consume,0) + IFNULL(his_consume,0)) consume, + (select count(1) from achieve_new z where z.beault_id=a.su_id and c.id=z.vip_id and z.order_type='服务单' group by z.beault_id,z.vip_id) projCnt + from sys_users a + left join achieve_new b on a.su_id=b.beault_id + left join sys_vip_info c on b.vip_id=c.ID + where 1=1 + <if test="record.companyId != null"> + and a.company_id=#{record.companyId} + </if> + <if test="record.shopId != null"> + and a.shop_id=#{record.shopId} + </if> + <if test="record.beginTime != null"> + and date_format(b.datatime, '%Y-%m-%d') > date_format(#{record.beginTime}, '%Y-%m-%d') + </if> + <if test="record.endTime != null"> + and date_format(#{record.endTime}, '%Y-%m-%d') > date_format(b.datatime, '%Y-%m-%d') + </if> + <if test="record.beaultId != null"> + and a.su_id=#{record.beaultId} + </if> + <if test="record.vipQueryKey != null and record.vipQueryKey != ''"> + and c.vip_name like concat('%', #{record.vipQueryKey}, '%') + </if> + <if test="record.beginTime == null and record.endTime == null"> + and date_format(b.datatime, '%Y-%m') = date_format(now(), '%Y-%m') + </if> + group by date_format(b.datatime, '%Y-%m-%d'), a.su_id, c.ID + <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> + order by date_format(b.datatime, '%Y-%m-%d') desc, a.su_id + <if test="pageVo.offset >=0 and pageVo.limit >0"> + limit + #{pageVo.offset},#{pageVo.limit} + </if> + </if> + </select> + + <select id="selectDailyBeautyListTotal" resultType="java.lang.Integer"> + select count(1) from ( + select + date_format(b.datatime, '%Y-%m-%d') datatime, + a.su_id, + a.su_name, + c.id vipId, + c.VIP_NAME, + c.arrival_way, + sum(proj_percentage) ticheng, + sum(IFNULL(free_consume,0) + IFNULL(his_consume,0)) consume + from sys_users a + left join achieve_new b on a.su_id=b.beault_id + left join sys_vip_info c on b.vip_id=c.ID + where 1=1 + <if test="record.companyId != null"> + and a.company_id=#{record.companyId} + </if> + <if test="record.shopId != null"> + and a.shop_id=#{record.shopId} + </if> + <if test="record.beginTime != null"> + and date_format(b.datatime, '%Y-%m-%d') > date_format(#{record.beginTime}, '%Y-%m-%d') + </if> + <if test="record.endTime != null"> + and date_format(#{record.endTime}, '%Y-%m-%d') > date_format(b.datatime, '%Y-%m-%d') + </if> + <if test="record.beaultId != null"> + and a.su_id=#{record.beaultId} + </if> + <if test="record.vipQueryKey != null and record.vipQueryKey != ''"> + and c.vip_name like concat('%', #{record.vipQueryKey}, '%') + </if> + <if test="record.beginTime == null and record.endTime == null"> + and date_format(b.datatime, '%Y-%m') = date_format(now(), '%Y-%m') + </if> + group by date_format(b.datatime, '%Y-%m-%d'), a.su_id, c.ID + ) a + </select> + + <select id="selectPlInfoByVipIdAndDate" resultType="java.lang.String"> + select group_concat(concat(name,'*', bb)) + from (select l.name name, 0+CAST(sum(n.amount) as char) bb from sys_out_store m + inner join sys_out_store_item n on m.id=n.OUT_STORE_ID + inner join shopping_goods l on n.SKU_ID=l.id + where m.SERVICE_ID in (select distinct service_order_id from achieve_new where date_format(datatime, '%Y-%m-%d') = date_format(#{datatime}, '%Y-%m-%d') and vip_id=#{vipId}) + group by l.id) a + </select> </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml index 30fa7f3..42b4adc 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml @@ -308,8 +308,8 @@ invalid_time, pay_methods, is_infinite, - achieve_rule_id - + achieve_rule_id, + is_cooperate ) VALUES ( #{id}, @@ -371,8 +371,8 @@ #{invalidTime}, #{payMethods}, #{isInfinite}, - #{achieveRuleId} - + #{achieveRuleId}, + #{isCooperate} ) </insert> diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml index a9ba0be..955e108 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml @@ -494,7 +494,7 @@ MAX(pay_time) payTime, GROUP_CONCAT(DISTINCT t2.shop_short_name) shopName from sys_order t1 - left join sys_order_flow b on t1.id=b.ORDER_ID and pay_method!='储值卡' + left join sys_order_flow b on t1.id=b.ORDER_ID and pay_method!='储值卡' and pay_method!='欠款' left join sys_shop_info t2 on t1.SHOP_ID=t2.ID where t1.VIP_ID=#{vipId} and STATU='已付款'; </select> @@ -690,4 +690,8 @@ </select> + <select id="selectArrearsByVipId" resultType="java.math.BigDecimal"> + select sum(arrears) from sys_order + where vip_id=#{vipId} and statu='欠款' + </select> </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml index e6ed5bb..558112d 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml @@ -140,7 +140,11 @@ <!-- 根据id更新 部分更新 --> <update id="updateOrderTime"> - UPDATE sys_proj_services set consume_time=#{consumeTime} WHERE id=#{id} + UPDATE sys_proj_services set + consume_time=#{serviceOrderTimeDto.consumeTime}, + yy_time=#{serviceOrderTimeDto.yyTime}, + create_time=#{serviceOrderTimeDto.createTime} + WHERE id=#{serviceOrderTimeDto.id} </update> <!-- 设置服务单为已通知 --> diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml index 957d259..5a13c18 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml @@ -728,13 +728,16 @@ a.type, a.SOURCE, e.ORDER_NO, - a.remark + a.remark, + s.SHOP_NAME from sys_proj_use a left join shopping_goods b on a.proj_id = b.id left join sys_vip_info c on c.ID = a.VIP_ID + left join sys_shop_info s on c.SHOP_ID=s.id left join sys_order_item d on d.id = a.ORDER_ITEM_ID left join sys_order e on e.id = d.ORDER_ID left join shopping_goods_category f on f.id = b.cate_id + <where> @@ -892,6 +895,8 @@ <collection property="taocanProjUse" ofType="com.matrix.system.hive.bean.SysProjUse"> <id property="id" column="proj_info_id" /> <result property="projName" column="proj_proj_name"/> + <result property="source" column="proj_source"/> + <result property="price" column="proj_price"/> <result property="failTime" column="proj_FAIL_TIME"/> <result property="surplusCount" column="proj_SURPLUS_COUNT"/> <result property="timeLength" column="proj_time_length"/> @@ -913,6 +918,8 @@ e.SURPLUS_COUNT proj_SURPLUS_COUNT, e.id proj_info_id, e.proj_id proj_projId, + e.source proj_source, + e.price proj_price, e.status proj_status, f.time_length proj_time_length, f.img proj_img diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml index 4c304c9..ae9ebb7 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml @@ -1461,7 +1461,7 @@ c.LEVEL_NAME vipLevel, a.POINT_ALL integral, e.shop_short_name shopName, - sum(IFNULL(b.gift_money, 0) + IFNULL(b.real_money, 0)) totalBalance, + sum(IFNULL(b.real_money, 0)) totalBalance, sum(IFNULL(b.gift_money, 0)) giftBalance, (select sum(IFNULL(d.goods_cash, 0) + IFNULL(d.proj_cash, 0) + IFNULL(d.card_cash, 0)) from achieve_new d where d.vip_id=a.id) totalShopping from sys_vip_info a @@ -1473,8 +1473,68 @@ + <select id="selectVipArrearsStatistics" resultType="java.util.Map"> + select + a.VIP_NAME vipName, + a.PHONE phone, + c.shop_short_name shopName, + sum(b.arrears) arrears, + count(1) cnt, + d.su_name staffName + from sys_vip_info a + inner join sys_order b on a.ID=b.VIP_ID + inner join sys_shop_info c on a.SHOP_ID=c.ID + left join sys_users d on a.STAFF_ID=d.su_id + where b.STATU='欠款' and b.arrears!=0 + <if test="record.companyId!=null"> + and a.company_id=#{record.companyId} + </if> + <if test="record.shopId!=null"> + and a.shop_id=#{record.shopId} + </if> + <if test='record.vipName!=null and record.vipName!="" '> + and (a.vip_name like concat('%', #{record.vipName}, '%') or a.vip_no like concat('%', #{record.vipName}, '%') or a.phone like concat('%', #{record.vipName}, '%')) + </if> + group by a.id + <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> + <if test="pageVo.sort !=null and pageVo.order !=null"> + order by + ${pageVo.sort} ${pageVo.order} + </if> + <if test="pageVo.offset >=0 and pageVo.limit >0"> + limit + #{pageVo.offset},#{pageVo.limit} + </if> + </if> + </select> + <select id="selectVipArrearsStatisticsTotal" resultType="java.lang.Integer"> + select count(1) from ( + select + a.VIP_NAME vipName, + a.PHONE phone, + c.shop_short_name shopName, + sum(b.arrears) arrears, + count(1) cnt, + d.su_name staffName + from sys_vip_info a + inner join sys_order b on a.ID=b.VIP_ID + inner join sys_shop_info c on a.SHOP_ID=c.ID + left join sys_users d on a.STAFF_ID=d.su_id + where b.STATU='欠款' and b.arrears!=0 + <if test="record.companyId!=null"> + and a.company_id=#{record.companyId} + </if> + <if test="record.shopId!=null"> + and a.shop_id=#{record.shopId} + </if> + <if test='record.vipName!=null and record.vipName!="" '> + and (a.vip_name like concat('%', #{record.vipName}, '%') or a.vip_no like concat('%', #{record.vipName}, '%') or a.phone like concat('%', #{record.vipName}, '%')) + </if> + group by a.id + ) a + </select> </mapper> diff --git a/zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/index.html b/zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/index.html index e106d1a..76758d7 100644 --- a/zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/index.html +++ b/zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/index.html @@ -11,7 +11,7 @@ .iw_poi_title {color:#CC5522;font-size:14px;font-weight:bold;overflow:hidden;padding-right:13px;white-space:nowrap} .iw_poi_content {font:12px arial,sans-serif;overflow:visible;padding-top:4px;white-space:-moz-pre-wrap;word-wrap:break-word} </style> -<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true"></script> +<script type="text/javascript" src="https://api.map.baidu.com/api?key=&v=1.1&services=true"></script> </head> <body onload="initMap();"> diff --git a/zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/map.html b/zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/map.html index b65ea1d..7029c94 100644 --- a/zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/map.html +++ b/zq-erp/src/main/resources/static/js/plugin/kindeditor/plugins/baidumap/map.html @@ -7,7 +7,7 @@ html { height: 100% } body { height: 100%; margin: 0; padding: 0; background-color: #FFF } </style> - <script charset="utf-8" src="http://api.map.baidu.com/api?v=1.3"></script> + <script charset="utf-8" src="https://api.map.baidu.com/api?v=1.3"></script> <script> var map, geocoder; function initialize() { diff --git a/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js b/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js index ef97725..878dd39 100644 --- a/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js +++ b/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js @@ -121,6 +121,10 @@ var MTools = { + closeIframe: function () { + parent.layer.close(parent.layer.getFrameIndex(window.name)); + }, + /** 返回一个随机字符串 */ uuid : function() { diff --git a/zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/map.html b/zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/map.html index 8bf8afe..f457982 100644 --- a/zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/map.html +++ b/zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/map.html @@ -4,7 +4,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript" src="../internal.js"></script> - <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.1&services=true"></script> + <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.1&services=true"></script> <style type="text/css"> .content{width:530px; height: 350px;margin: 10px auto;} .content table{width: 100%} diff --git a/zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/show.html b/zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/show.html index 329cfeb..929fdd8 100644 --- a/zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/show.html +++ b/zq-erp/src/main/resources/static/plugin/beditor/dialogs/map/show.html @@ -14,7 +14,7 @@ overflow: hidden; } </style> - <script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true"></script> + <script type="text/javascript" src="https://api.map.baidu.com/api?key=&v=1.1&services=true"></script> </head> <body onload="initMap();"> diff --git a/zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/index.html b/zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/index.html index 313bc61..664bc4b 100644 --- a/zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/index.html +++ b/zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/index.html @@ -12,7 +12,7 @@ .iw_poi_title {color:#CC5522;font-size:14px;font-weight:bold;overflow:hidden;padding-right:13px;white-space:nowrap} .iw_poi_content {font:12px arial,sans-serif;overflow:visible;padding-top:4px;white-space:-moz-pre-wrap;word-wrap:break-word} </style> -<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true"></script> +<script type="text/javascript" src="https://api.map.baidu.com/api?key=&v=1.1&services=true"></script> </head> <body onload="initMap();"> diff --git a/zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/map.html b/zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/map.html index b65ea1d..7029c94 100644 --- a/zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/map.html +++ b/zq-erp/src/main/resources/static/plugin/kindeditor/plugins/baidumap/map.html @@ -7,7 +7,7 @@ html { height: 100% } body { height: 100%; margin: 0; padding: 0; background-color: #FFF } </style> - <script charset="utf-8" src="http://api.map.baidu.com/api?v=1.3"></script> + <script charset="utf-8" src="https://api.map.baidu.com/api?v=1.3"></script> <script> var map, geocoder; function initialize() { diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/shop/shopInfo-form.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/shop/shopInfo-form.html index 6f50cb3..8eeeea3 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive-erp/shop/shopInfo-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/shop/shopInfo-form.html @@ -13,7 +13,7 @@ th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> - <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=Oego4OzlvPRPNyjCPTctXtuVNsSissOX"></script> + <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=Oego4OzlvPRPNyjCPTctXtuVNsSissOX"></script> </head> diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/statistics-projuse-item.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/statistics-projuse-item.html index 02bf9f9..46bd288 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/statistics-projuse-item.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/statistics-projuse-item.html @@ -43,6 +43,14 @@ <input autocomplete="off" placeholder="姓名/编号/电话" name="vipQueryKey" type="text" class="form-control" > </div> + <div class="form-group mr-20"> + <label >所属门店</label> <select + class="form-control autoFull" + data-url="/admin/shopInfo/findShops" data-value="id" + data-filed="shopName" name="shopId"> + <option value="">--请选择所属门店--</option> + </select> + </div> <div class="form-group mr-20"> <label>到期时间</label><!-- 入库时间的查询增加一个查询的其实时间两个字段 --> @@ -58,6 +66,7 @@ <tr> <th data-formatter="MGrid.indexfn" data-align="center" data-width="30px" >序号</th> <th data-field="VIP_NAME" >客户名</th> + <th data-field="SHOP_NAME" >客户门店</th> <th data-field="PROJ_NAME" >服务名称</th> <th data-field="FAIL_TIME" data-formatter="MGrid.getTime" data-sortable="true" >到期日期</th> <th data-field="SURPLUS_COUNT" data-sortable="true" >剩余次数</th> diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html index 6a86a31..e5a8395 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html @@ -911,7 +911,7 @@ this.achieveList.push({ orderItem: item, staff: this.loginUser, - saleId: this.loginUser.suId, + saleId: _this.loginUser.suUserType === 'admin' ? '' : this.loginUser.suId, goodsCash: item.payMoney, achieveType : _this.achieveTypeList[0].value, commission: 0, diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html index 106f1be..6f356c3 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html @@ -218,7 +218,7 @@ title: "修改订单时间", maxmin: true, area: [MUI.SIZE_L, '500px'], - content: [basePath + '/admin/projService/toServiceOrderUpdateTime?id=' + id] + content: [basePath + '/admin/redirect/hive/beautySalon/updateServiceOrderTimeV2?id=' +id] }); } diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html index 867bbc2..1287221 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html @@ -1,9 +1,4 @@ - - - - - -<!DOCTYPE HTML> +<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8"> diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html new file mode 100644 index 0000000..5f36762 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html @@ -0,0 +1,126 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + +</head> +<body> +<div class="ibox-content" id="app" v-cloak > + <el-form :model="serviceOrder" ref="form" label-width="100px" class="demo-form"> + + + <el-form-item label="创建时间"> + <el-date-picker v-model="serviceOrder.createTime" type="datetime"></el-date-picker> + </el-form-item> + + + <el-form-item label="预约时间"> + <el-date-picker v-model="serviceOrder.yyTime" type="datetime"></el-date-picker> + </el-form-item> + + + <el-form-item label="划扣时间"> + <el-date-picker v-model="serviceOrder.consumeTime" type="datetime" ></el-date-picker> + <span>修改划扣时间才会同步修改服务单业绩</span> + </el-form-item> + + <el-form-item> + <el-button type="primary" @click="submitForm('form')" >保存</el-button> + <el-button @click="closeFram()">关闭</el-button> + </el-form-item> + + </el-form> +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.umd.min.js"></script> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.min.css"> + + +<script> + var id = $.query.get("id"); + + + var app = new Vue({ + el: '#app', + data: { + + //表单数据 + serviceOrder:{} + + }, + + /** + * 初始化数据表 + */ + created: function () { + this.loadData() + }, + + methods: { + loadData(){ + let _this=this; + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/projService/findServiceOrderInfoVo/'+id, + callback: function (data) { + _this.serviceOrder = data.data; + } + }); + }, + submitForm(){ + let _this=this; + let data={ + id:this.serviceOrder.id, + yyTime:this.serviceOrder.yyTime, + createTime:this.serviceOrder.createTime, + consumeTime:this.serviceOrder.consumeTime + } + AjaxProxy.requst({ + app: _this, + data: data, + contentType: 'application/json', + url: basePath + '/admin/projService/updateOrderTime', + callback: function (data) { + + _this.$message.success("修改成功"); + if(parent.myGrid){ + parent.myGrid.serchData() + } + if(parent.app){ + parent.app.serviceOrderQuery(); + } + setInterval(MTools.closeIframe(), 1000); + + } + }); + + }, + closeFram: function () { + + parent.layer.close(parent.layer.getFrameIndex(window.name)); + + }, + + } + + }) +</script> + +</body> +</html> + diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html index c2b4cda..393eb60 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html @@ -124,10 +124,12 @@ </el-col> </el-col> <el-col :span="8" style="float: right; margin-right: 20px;"> + <el-button type="primary" plain @click="recharge">充值</el-button> <el-button type="warning" plain @click="addOrder">开单</el-button> <el-button type="success" plain @click="addServiceOrder">开服务单</el-button> <el-button type="info" plain @click="exportExcel">导出项目</el-button> + <el-button type="primary" plain @click="openAdd">会员注册</el-button> </el-col> </el-header> <el-container> @@ -150,6 +152,7 @@ <el-row style="padding: 10px 20px;"> <p>余额:<span v-if="vipInfo.balance != null">{{vipInfo.balance}}元</span></p> <p>积分:<span v-if="vipInfo.pointAll != null">{{vipInfo.pointAll}}</span></p> + <p>欠款金额:<span v-if="vipInfo.arrears != null">{{vipInfo.arrears}} 元</span></p> <p>累计消费金额:<span v-if="vipInfo.totalMoney != null">{{vipInfo.totalMoney.toFixed(2)}} 元</span></p> <p>累计消费次数:<span v-if="vipInfo.totalTimes != null">{{vipInfo.totalTimes}} 次</span></p> <p>上次消费时间:<span v-if="vipInfo.payTime">{{vipInfo.payTime}}</span></p> @@ -819,6 +822,14 @@ } }, methods : { + openAdd(){ + layer.full(layer.open({ + type : 2, + title : "添加会员信息", + area : [ MUI.SIZE_L, '450px' ], + content : [ basePath+'/admin/vipInfo/editForm' ] + })); + }, //打开订单详情页面 openOrder(index,row){ layer.full(layer.open({ @@ -1242,7 +1253,7 @@ title: "修改订单时间", maxmin: true, area: [MUI.SIZE_L, '500px'], - content: [basePath + '/admin/projService/toServiceOrderUpdateTime?id=' + row.id] + content: [basePath + '/admin/redirect/hive/beautySalon/updateServiceOrderTimeV2?id=' + row.id] }); }, /********* 服务单tab end ***********/ diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/orgment/shopInfo-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/orgment/shopInfo-form.html index 1b8cfba..d9702b7 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/orgment/shopInfo-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/orgment/shopInfo-form.html @@ -13,7 +13,7 @@ th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> - <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=Oego4OzlvPRPNyjCPTctXtuVNsSissOX"></script> + <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=Oego4OzlvPRPNyjCPTctXtuVNsSissOX"></script> </head> diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html index 224cacb..82445c2 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html @@ -234,6 +234,17 @@ </el-col> </el-row> + <el-row> + <el-col :span="10"> + <el-form-item label="是否合作项目"> + <el-radio-group v-model="form.isCooperate"> + <el-radio label="2">否</el-radio> + <el-radio label="1">是</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + </el-row> + <p class="el-big-title">销售设置</p> @@ -1145,6 +1156,7 @@ //表单数据 form: { isPresent: '否', + isCooperate: '2', staus: '上架', //产品组合 assembleGoods: [], diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html new file mode 100644 index 0000000..809c75c --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html @@ -0,0 +1,223 @@ + +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> + <meta http-equiv="Cache-Control" content="no-siteapp" /> + <LINK rel="Bookmark" href="../images/favicon.ico"> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> + <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> + <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + <script type="text/javascript" th:src="@{/js/function/public.js}"></script> +</head> +<style> + .table-style { + margin: 20px 0; + padding: 20px 10px; + border: 1px solid #DCDFE6; + background-color: white; + } + .search-form { + background-color: white; + padding-top: 10px; + padding-left: 20px; + padding-bottom: 10px; + } +</style> +<body> +<div id="app" style=""> + <el-row class="search-form"> + <el-form ref="form" :model="form" inline> + <el-form-item label="日期范围"> + <el-date-picker v-model="form.timeRange" + type="datetimerange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </el-form-item> + <el-form-item label="业绩归属人"> + <el-select v-model="form.beaultId" placeholder="请选择"> + <el-option v-for="item in achieveUsers" + :key="item.suId" + :label="item.suName" + :value="item.suId"></el-option> + </el-select> + </el-form-item> + <el-form-item label="会员"> + <el-input v-model="form.vipQueryKey"></el-input> + </el-form-item> + + <el-form-item label="门店"> + <el-select v-model="form.shopId" placeholder="请选择所属门店"> + <el-option v-for="item in shopList" + :key="item.id" + :label="item.shopName" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-button type="primary" @click="search" >搜索</el-button> + <el-button @click="resetForm('form')">重置</el-button> + <!-- <el-button type="warning" @click="exportExcel">导出</el-button>--> + </el-form> + </el-row> + <el-row class="table-style"> + <el-table :data="tableData" style="width: 100%"> + <el-table-column type="index" width="30" fixed="left"></el-table-column> + <el-table-column prop="datatime" width="150" label="时间" fixed="left"></el-table-column> + <el-table-column prop="beautyName" label="美疗师" fixed="left"></el-table-column> + <el-table-column prop="vipName" label="客户" fixed="left"></el-table-column> + <el-table-column prop="isAppoint" label="是否指定客" width="100"> + <template slot-scope="scope"> + <span v-if="scope.row.isAppoint ==1 ">是</span> + <span v-else>否</span> + </template> + </el-table-column> + <el-table-column label="客流" align="center"> + <el-table-column prop="orderCnt" label="是否会员"> + <template slot-scope="scope"> + <span v-if="scope.row.orderCnt > 0">是</span> + <span v-else>否</span> + </template> + </el-table-column> + <el-table-column prop="arrivalWay" label="到店途径"></el-table-column> + <el-table-column prop="arriveCnt" label="当月到店次数" width="120"></el-table-column> + </el-table-column> + <el-table-column label="实操业绩" align="center"> + <el-table-column prop="projInfo" label="项目->消耗产品" width="230"></el-table-column> + <el-table-column prop="projCnt" label="项目数量"></el-table-column> + <el-table-column prop="ticheng" label="手工费"></el-table-column> + <el-table-column prop="consume" label="耗卡"></el-table-column> + </el-table-column> + <el-table-column label="现金业绩" align="center"> + <el-table-column prop="payMethods" label="消费类型" width="200"></el-table-column> + <el-table-column prop="orderType" label="特色项目"></el-table-column> + <el-table-column prop="teamPay" label="团购销售"></el-table-column> + <el-table-column prop="tcAndProjCash" label="卡项销售"></el-table-column> + <el-table-column prop="productCash" label="产品销售"></el-table-column> + <el-table-column prop="cardCash" label="会员充值"></el-table-column> + <el-table-column prop="cashPay" label="总业绩"></el-table-column> + <el-table-column prop="cardPay" label="划卡"></el-table-column> + </el-table-column> + </el-table> + <el-row style="margin-top: 10px;"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="page.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="page.size" + layout="total, sizes, prev, pager, next, jumper" + :total="page.total"> + </el-pagination> + </el-row> + </el-row> +</div> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> +<script type="text/javascript"> + var vue = new Vue({ + el : "#app", + data : { + tableData : [], + shopList : [], + form : { + timeRange : '', + vipQueryKey : '', + beaultId : '', + shopId : '' + }, + page : { + currentPage : 1, + size : 10, + total : 0 + } + }, + created : function() { + this.queryTableData(); + }, + methods : { + queryTableData() { + let _this = this; + let params = {}; + let page = _this.page; + let form = _this.form; + + if (form.timeRange) { + params.beginTime = form.timeRange?moment(form.timeRange[0]).format("YYYY-MM-DD HH:mm"):''; + params.endTime = form.timeRange?moment(form.timeRange[1]).format("YYYY-MM-DD HH:mm"):''; + } + params.vipQueryKey=form.vipQueryKey; + params.beaultId=form.beaultId; + params.limit = page.size; + params.offset = (page.currentPage - 1) * page.size; + AjaxProxy.requst({ + app: _this, + data: params, + url: basePath + "/admin/achieve/findDailyBeautyList", + callback: function (loj) { + _this.tableData = loj.rows; + _this.page.total = loj.total; + + _this.queryAchieveUsers(); + _this.queryShops(); + } + }); + }, + queryAchieveUsers() { + let _this = this; + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/getShopStaffByRoleName', + callback: function (data) { + _this.achieveUsers = data.rows; + } + }); + }, + resetForm(formName) { + // this.$refs[formName].resetFields(); + this.form = { + timeRange : '', + vipQueryKey : '', + beaultId : '' + } + }, + search() { + this.queryTableData(); + }, + queryShops() { + let _this = this; + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/shopInfo/findAllWithPermi', + callback: function (data) { + _this.shopList = data.rows; + } + }); + }, + handleSizeChange(val) { + this.page.size = val; + this.queryTableData(); + }, + handleCurrentChange(val) { + this.page.currentPage = val; + this.queryTableData(); + }, + } + }) +</script> +</body> +</html> diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/statistics-projuse-item.html b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/statistics-projuse-item.html index ab0f0cb..de59d16 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/statistics-projuse-item.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/statistics-projuse-item.html @@ -42,7 +42,14 @@ <label>会员</label> <input autocomplete="off" placeholder="姓名/编号/电话" name="vipQueryKey" type="text" class="form-control" > </div> - + <div class="form-group mr-20"> + <label >所属门店</label> <select + class="form-control autoFull" + data-url="/admin/shopInfo/findShops" data-value="id" + data-filed="shopName" name="shopId"> + <option value="">--请选择所属门店--</option> + </select> + </div> <div class="form-group mr-20"> <label>到期时间</label><!-- 入库时间的查询增加一个查询的其实时间两个字段 --> diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/vip-arrears-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/vip-arrears-list.html new file mode 100644 index 0000000..5798f72 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/vip-arrears-list.html @@ -0,0 +1,79 @@ + +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> +<meta charset="utf-8"> +<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> +<meta name="renderer" content="webkit|ie-comp|ie-stand"> +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> +<meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> +<meta http-equiv="Cache-Control" content="no-siteapp" /> +<LINK rel="Bookmark" href="../images/favicon.ico"> +<!-- 本框架基本脚本和样式 --> +<script type="text/javascript" + th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> +</head> +<body class="gray-bg"> + <div class="ibox-content"> + <!-- 搜索框部分start --> + <form class="form-inline" id="serchform"> + <div class="row mb-10"> + <div class="col-sm-8"> + <button onclick="myGrid.serchData()" type="button" class="btn btn-info btn-sm"><i class="fa fa-search" ></i> 搜索</button> + <button onclick="myGrid.resetForm()" type="button" class="btn btn-default btn-sm"><i class="fa fa-refresh " ></i> 重置</button> + </div> + </div> + <div class="form-group mr-20"> + <input autocomplete="off" placeholder="会员姓名/手机/编号" name="vipName" type="text" class="form-control" /> + </div> + <div class="form-group mr-20"> + <label for="staffId">健康顾问</label> + <select class="form-control autoFull select2" + th:data-url="@{/admin/shopAll}" + data-value="suId" + id="staffId" + data-filed="suName" + name="staffId"> + <option value="">--请选择顾问--</option> + </select> + </div> + </form> + <div id="option-bar" > + <button matrix:btn="bedList-exportExcel" onclick="exportExcel()" type="button" class="btn btn-default btn-sm"><i class="fa fa-download" ></i> 导出</button> + </div> + <table id="mgrid" data-url="" > + <thead> + <tr> + <th data-formatter="MGrid.indexfn" data-align="center" data-width="30px" >序号</th> + <th data-field="vipName">会员名称</th> + <th data-field="phone">手机号码</th> + <th data-field="shopName">所属门店</th> + <th data-field="arrears" data-sortable="true">欠款金额</th> + <th data-field="cnt" data-sortable="true">欠款订单</th> + <th data-field="staffName">所属顾问</th> + </tr> + </thead> + </table> + </div> + <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script><script type="text/javascript"> + var myGrid; + $(function(){ + //初始化项目属性搜索列表 + MTools.autoFullSelect(); + $(".select2").select2(); + + myGrid=MGrid.initGrid({ + url:basePath+"/admin/vipStatistics/vipArrearsStatistics" + }); + }); + + // function exportExcel(){ + // var param=MForm.toUrlParam("#serchform"); + // window.location.href=basePath+"/admin/moneyCardUseStatistics/exportSummaryItemDetail?"+param; + // } + + </script> +</body> +</html> diff --git a/zq-erp/src/main/resources/templates/views/admin/index.html b/zq-erp/src/main/resources/templates/views/admin/index.html index 219d21a..1e6217d 100644 --- a/zq-erp/src/main/resources/templates/views/admin/index.html +++ b/zq-erp/src/main/resources/templates/views/admin/index.html @@ -89,7 +89,7 @@ <i class="fa fa-user" ></i> <span style="line-height: 35px; color: #333; " th:utext="${session.userInfo.suName}+' | '"> </span> - <a style="line-height: 35px; color: #333; " target="_blank" href="https://www.yuque.com/books/share/70c39d28-6aac-4763-ae92-899ea5822a0d" > + <a style="line-height: 35px; color: #333; " target="_blank" href="https://www.yuque.com/books/share/7b10c3aa-f289-4f36-b402-5031fbd7f038" > <i class="fa fa-book" aria-hidden="true"></i> 帮助手册</a> </div> diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html index 911708e..084a646 100644 --- a/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html +++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html @@ -92,6 +92,34 @@ .drawer { overflow: scroll; } + + .assembly-style .el-form-item__content{ + margin-left: 0px !important; + display: flex; + align-items: center; + } + .assembly-style .el-input{ + width: 100px !important; + } + .assembly-style i{ + font-size: 30px; + } + .assembly-style .active{ + color: #409eff; + } + + .module-property{ + display: flex; + flex-wrap: wrap; + } + .module-property .el-form-item__content{ + margin-left: 0px !important; + display: flex; + align-items: center; + } + .module-property .el-input{ + width: 100px !important; + } </style> </head> <body> @@ -320,12 +348,36 @@ </el-col>--> </el-form-item> - <el-form-item label="CSS样式"> - <el-input v-model="currentNode.nodeStyleStr"></el-input> +<!-- <el-form-item label="CSS样式">--> +<!-- <el-input v-model="currentNode.nodeStyleStr"></el-input>--> +<!-- </el-form-item>--> + <el-form-item label="组件宽高" class="assembly-style"> + <el-input v-model="zjwidth" v-on:input="widthChange"></el-input> + <i :class="selected ? 'el-icon-link active' : 'el-icon-link'" @click="fixedProportion"></i> + <el-input v-model="zjheight" v-on:input="heightChange"></el-input> </el-form-item> - <el-form-item label="节点属性"> - <el-input v-model="currentNode.nodeAttribute"></el-input> +<!-- <el-form-item label="节点属性">--> +<!-- <el-input v-model="currentNode.nodeAttribute"></el-input>--> +<!-- </el-form-item>--> + <el-form-item label="组件属性"> +<!-- 1.图片--> +<!-- 6.滑块--> +<!-- 3.轮播图--> +<!-- 4.视频--> +<!-- 5.跑马灯文字--> + <el-from class="module-property" > + <el-form-item label="自动切换时间间隔(毫秒)"> + <el-input v-model="interval"></el-input> + </el-form-item> + <el-form-item label="前边距"> + <el-input v-model="previousMargin"></el-input> + </el-form-item> + <el-form-item label="后边距"> + <el-input v-model="nextMargin"></el-input> + </el-form-item> + </el-from> </el-form-item> + <el-form-item label="页面组"> <el-input v-model="currentNode.pageCode"></el-input> @@ -366,7 +418,6 @@ <script> - var id = $.query.get("id"); @@ -390,6 +441,14 @@ pageList:[], //当前编辑页面 currentPage:{}, + zjwidth:'', + zjheight:'', + selected:false, + //宽高比 + aspectRatio:'', + interval:'', + previousMargin:'', + nextMargin:'', }, created: function () { @@ -414,8 +473,17 @@ mounted: function () { }, - methods: { + widthChange(){ + if(this.selected){ + this.zjheight = parseInt(this.zjwidth/this.aspectRatio) + } + }, + heightChange(){ + if(this.selected){ + this.zjwidth = parseInt(this.zjheight*this.aspectRatio) + } + }, getHeight() { this.height = window.innerHeight - 40 + 'px'; }, @@ -431,15 +499,32 @@ spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }); + let f = e.target.files[0]; + let reader = new FileReader(); + reader.onload = function (e) { + let data = e.target.result; + //加载图片获取图片真实宽度和高度 + let image = new Image(); + image.onload=function(){ + let width = image.width; + let height = image.height; + _this.aspectRatio= width/height + }; + image.src= data; + }; + reader.readAsDataURL(f); + uploadForImage( basePath + "/admin/multipleUploadFile/doUpload", e.target.files[0], function (d, result) { + _this.process = d + "%"; if (d == 100) { if (result) { if (result.status == 200) { + loading.close(); _this.currentNode.ads[index].imgUrl = result.path; } else { @@ -512,8 +597,38 @@ }, clickNode(node) { + console.log(node) + var _this = this; this.currentNode = node; this.drawer = !this.drawer; + this.zjwidth = node.nodeStyle.width.substring(0,node.nodeStyle.width.length-2); + this.zjheight = node.nodeStyle.height.substring(0,node.nodeStyle.height.length-2); + let nodeAttribute = JSON.parse(node.nodeAttribute) + console.log(1111) + console.log(nodeAttribute) + if(nodeAttribute.interval){ + _this.interval = nodeAttribute['interval']; + _this.previousMargin = nodeAttribute['previous-margin']; + _this.nextMargin = nodeAttribute['next-margin']; + } + + + + + let image = new Image(); + image.onload = function() { + let width = image.width; // 宽 px + let height = image.height; // 高 px + _this.aspectRatio = width/height; + console.log(1111); + console.log(_this.aspectRatio); + } + if(node.ads){ + image.src = node.ads[0].imgUrl; + }else { + image.src = node.nodeValue; + } + }, //改变编辑页面,切换页面元素 @@ -521,7 +636,6 @@ this.currentPage=this.pageList[index]; this.currentPageCode=this.pageList[index].code; - console.log(this.currentPageCode); this.loadPageAds(); }, loadPageAds() { @@ -537,6 +651,8 @@ if (node.nodeStyle != null && node.nodeStyle.length > 1) { node.nodeStyleStr = node.nodeStyle; node.nodeStyle = JSON.parse(node.nodeStyle); + _this.zjwidth = node.nodeStyle.width.substring(0,node.nodeStyle.width.length-2); + _this.zjheight = node.nodeStyle.height.substring(0,node.nodeStyle.height.length-2); } } _this.adNodes = data.rows; @@ -601,9 +717,18 @@ if (!this.validation(cNode)) { return false; } + let zjw = this.zjwidth; + let zjh = this.zjheight; + if(zjw != null && zjh != null){ + cNode.nodeStyleStr = '{"width":"'+zjw+'px","height":"'+zjh+'px"}'; + } + if(this.interval != null && this.previousMargin != null && this.nextMargin != null){ + cNode.nodeAttribute = '{"interval":'+this.interval+',"previous-margin":'+this.previousMargin+',"next-margin":'+this.nextMargin+'}'; + } if (cNode.nodeStyleStr != null && cNode.nodeStyleStr.length > 1) { cNode.nodeStyle = JSON.parse(cNode.nodeStyleStr); + } let data = { @@ -673,7 +798,14 @@ "1" ); }, - + fixedProportion(){ + let _this = this; + _this.selected = !_this.selected + if(_this.selected){ + _this.zjwidth = 0 + _this.zjheight = 0 + } + }, }, destroyed() { diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html index d8ed383..96cde1a 100644 --- a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html @@ -807,13 +807,22 @@ sku.sort = sort; //推广提成 var selfPrice = tds.eq(length - 5).find("input").val(); + if(selfPrice == ""){ + selfPrice = 0; + } sku.selfPrice = selfPrice; //推广提成 var sealesPrice = tds.eq(length - 4).find("input").val(); + if(sealesPrice == ""){ + sealesPrice = 0; + } sku.sealesPrice = sealesPrice; //邀请提成 var invitationPrice = tds.eq(length - 3).find("input").val(); + if(invitationPrice == ""){ + invitationPrice = 0; + } sku.invitationPrice = invitationPrice; //兑换所需金额 diff --git a/zq-erp/src/main/resources/templates/views/common/login.html b/zq-erp/src/main/resources/templates/views/common/login.html index 3ae470b..5bc7de7 100644 --- a/zq-erp/src/main/resources/templates/views/common/login.html +++ b/zq-erp/src/main/resources/templates/views/common/login.html @@ -271,9 +271,9 @@ href="https://pubstorage-bucket.oss-cn-shenzhen.aliyuncs.com/tools/xp/49.0.2623.112_chrome_installer.exe " target="_blank">谷歌浏览器(推荐)</a><span>|</span><strong>打印控件:</strong><a href="https://pubstorage-bucket.oss-cn-shenzhen.aliyuncs.com/tools/CLodop_Setup_for_Win32NT_https_3.056Extend.exe" - target="_blank">下载控件</a><span>|</span><strong>APP:</strong><a + target="_blank">下载控件</a><span>|</span><!--<strong>APP:</strong><a href="http://testfile.hive.jyymatrix.cc/mobile/download.html" - target="_blank">下载APP客户端</a> + target="_blank">下载APP客户端</a>--> </p> </div> </div> diff --git a/zq-erp/src/main/resources/templates/views/super/sysCompany-form.html b/zq-erp/src/main/resources/templates/views/super/sysCompany-form.html index a393e47..bf5bf7e 100644 --- a/zq-erp/src/main/resources/templates/views/super/sysCompany-form.html +++ b/zq-erp/src/main/resources/templates/views/super/sysCompany-form.html @@ -1,25 +1,25 @@ <!DOCTYPE HTML> <html> <head> -<meta charset="utf-8"> -<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> -<meta name="renderer" content="webkit|ie-comp|ie-stand"> -<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> -<meta name="viewport" - content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> -<meta http-equiv="Cache-Control" content="no-siteapp" /> -<!-- 本框架基本脚本和样式 --> -<script type="text/javascript" - th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> -<script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> + <meta http-equiv="Cache-Control" content="no-siteapp" /> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" + th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> + <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> -<!-- 界面单独引入的其他样式和脚本 --> -<link rel="stylesheet" - th:href="@{/plugin/zTree/zTreeStyle/zTreeStyle.css}" type="text/css"> -<script type="text/javascript" - th:src="@{/plugin/zTree/jquery.ztree.core-3.5.min.js}"></script> -<script type="text/javascript" - th:src="@{/plugin/zTree/jquery.ztree.excheck.min.js}"></script> + <!-- 界面单独引入的其他样式和脚本 --> + <link rel="stylesheet" + th:href="@{/plugin/zTree/zTreeStyle/zTreeStyle.css}" type="text/css"> + <script type="text/javascript" + th:src="@{/plugin/zTree/jquery.ztree.core-3.5.min.js}"></script> + <script type="text/javascript" + th:src="@{/plugin/zTree/jquery.ztree.excheck.min.js}"></script> <style> #treeDemo{ height: 500px; @@ -30,160 +30,171 @@ </style> </head> <body> - <div class="ibox-content"> - <form class="form-horizontal" id="dataform" - onsubmit="javascripr:return false;"> - <input type="hidden" name="tokenUrl" th:value="${tokenUrl}"> <input - type="hidden" name="token" th:value="${token}"> <input - type="hidden" name="comId" th:value="${obj.comId }"> - <div class="form-group"> - <label class="col-sm-2 control-label">公司名称<span +<div class="ibox-content"> + <form class="form-horizontal" id="dataform" + onsubmit="javascripr:return false;"> + <input type="hidden" name="tokenUrl" th:value="${tokenUrl}"> <input + type="hidden" name="token" th:value="${token}"> <input + type="hidden" name="comId" th:value="${obj.comId }"> + <div class="form-group"> + <label class="col-sm-2 control-label">公司名称<span class="text-danger">*</span></label> + <div class="col-sm-4"> + <input type="text" dataType="*1-100" class="form-control" + name="comName" th:value="${obj.comName }" + nullmsg="公司名称不能为空"> + <div class="Validform_checktip"></div> + </div> + <label class="col-sm-2 control-label">联系人<span + class="text-danger">*</span></label> + <div class="col-sm-4"> + <input type="text" dataType="*1-50" class="form-control" + th:value="${obj.comBoss }" name="comBoss" nullmsg="联系人不能为空"> + <div class="Validform_checktip"></div> + </div> + </div> + <div class="form-group"> + <label class="col-sm-2 control-label">联系电话</label> + <div class="col-sm-4"> + <input type="text" dataType="*11-11" class="form-control" + name="comBossTel" ignore="ignore" th:value="${obj.comBossTel }" + nullmsg="联系电话不能为空"> + <div class="Validform_checktip"></div> + </div> + <label class="col-sm-2 control-label">地址</label> + <div class="col-sm-4"> + <input type="text" dataType="*1-510" class="form-control" + ignore="ignore" th:value="${obj.comAddress }" name="comAddress" + nullmsg="地址不能为空"> + <div class="Validform_checktip"></div> + </div> + </div> + <div class="form-group"> + <label class="col-sm-2 control-label">网站地址</label> + <div class="col-sm-4"> + <input type="text" class="form-control" + th:value="${obj.comWebUrl }" name="comWebUrl" + nullmsg="网站不能为空"> + <div class="Validform_checktip"></div> + </div> + <label class="col-sm-2 control-label">企业可以用店铺数</label> + <div class="col-sm-4"> + <input type="text" dataType="n" class="form-control" + ignore="ignore" th:value="${obj.comAge}" name="comAge" + nullmsg="企业可以用店铺数不能为空"> + <div class="Validform_checktip"></div> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-2 control-label">公司编码<span + class="text-danger">*</span></label> <div class="col-sm-4"> <input type="text" dataType="*1-100" class="form-control" - name="comName" th:value="${obj.comName }" - nullmsg="公司名称不能为空"> - <div class="Validform_checktip"></div> - </div> - <label class="col-sm-2 control-label">联系人<span - class="text-danger">*</span></label> - <div class="col-sm-4"> - <input type="text" dataType="*1-50" class="form-control" - th:value="${obj.comBoss }" name="comBoss" nullmsg="联系人不能为空"> + name="comCode" th:value="${obj.comCode }" + nullmsg="公司编码不能为空"> <div class="Validform_checktip"></div> </div> </div> - <div class="form-group"> - <label class="col-sm-2 control-label">联系电话</label> - <div class="col-sm-4"> - <input type="text" dataType="*11-11" class="form-control" - name="comBossTel" ignore="ignore" th:value="${obj.comBossTel }" - nullmsg="联系电话不能为空"> - <div class="Validform_checktip"></div> - </div> - <label class="col-sm-2 control-label">地址</label> - <div class="col-sm-4"> - <input type="text" dataType="*1-510" class="form-control" - ignore="ignore" th:value="${obj.comAddress }" name="comAddress" - nullmsg="地址不能为空"> - <div class="Validform_checktip"></div> - </div> + <div class="form-group"> + <label class="col-sm-2 control-label">企业功能</label> + <div class=" ztree col-sm-9" id="treeDemo"></div> + </div> + <div class="form-group "> + <div class="col-sm-12 text-center"> + <a href="javascript:;" onclick="myForm.submit()" + class="btn btn-success radius"><i class="fa fa-check"></i> 保存</a> + <a class="btn btn-danger radius" href="javascript:;" + onclick="MTools.closeForm()"><i class="fa fa-close"></i> 关闭</a> </div> - <div class="form-group"> - <label class="col-sm-2 control-label">网站地址</label> - <div class="col-sm-4"> - <input type="text" class="form-control" - th:value="${obj.comWebUrl }" name="comWebUrl" - nullmsg="网站不能为空"> - <div class="Validform_checktip"></div> - </div> - <label class="col-sm-2 control-label">企业可以用店铺数</label> - <div class="col-sm-4"> - <input type="text" dataType="n" class="form-control" - ignore="ignore" th:value="${obj.comAge}" name="comAge" - nullmsg="企业可以用店铺数不能为空"> - <div class="Validform_checktip"></div> - </div> - </div> - <div class="form-group"> - <label class="col-sm-2 control-label">企业功能</label> - <div class=" ztree col-sm-9" id="treeDemo"></div> - </div> - <div class="form-group "> - <div class="col-sm-12 text-center"> - <a href="javascript:;" onclick="myForm.submit()" - class="btn btn-success radius"><i class="fa fa-check"></i> 保存</a> - <a class="btn btn-danger radius" href="javascript:;" - onclick="MTools.closeForm()"><i class="fa fa-close"></i> 关闭</a> - </div> - </div> - </form> - </div> - <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> - <script th:inline="javascript"> - var invokeUrl = basePath+"/admin/sysCompany/addCompany"; - /*<![CDATA[*/ - var obj=/*[[${obj}]]*/ - /*]]>*/ - if(obj.comId!=null){ - invokeUrl = basePath+"/admin/sysCompany/modifyCompany"; - } + </div> + </form> +</div> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script th:inline="javascript"> + var invokeUrl = basePath+"/admin/sysCompany/addCompany"; + /*<![CDATA[*/ + var obj=/*[[${obj}]]*/ + /*]]>*/ + if(obj.comId!=null){ + invokeUrl = basePath+"/admin/sysCompany/modifyCompany"; + } - var myForm = null; - var tree = null; - $(function() { - MTools.autoFullSelect(); - $(".select2").select2({ - 'width' : '100%' - }); - myForm = MForm.initForm({ - invokeUrl : invokeUrl, - beforeSubmit : function() { - var items = tree.getCheckedNodes(); - var keys = ""; - for (var i = 0; i < items.length; i++) { - keys += items[i]["id"] + ","; - } - myForm.initParam.extendParam = { - "comFunctions" : keys - }; - }, - afterSubmit : function() { - parent.myGrid.serchData(); - }, - }); - initFunctionList(); + var myForm = null; + var tree = null; + $(function() { + MTools.autoFullSelect(); + $(".select2").select2({ + 'width' : '100%' }); + myForm = MForm.initForm({ + invokeUrl : invokeUrl, + beforeSubmit : function() { + var items = tree.getCheckedNodes(); + var keys = ""; + for (var i = 0; i < items.length; i++) { + keys += items[i]["id"] + ","; + } + myForm.initParam.extendParam = { + "comFunctions" : keys + }; + }, + afterSubmit : function() { + parent.myGrid.serchData(); + }, + }); + initFunctionList(); + }); - function initFunctionList() { - var zNodes = new Array(); - $.AjaxProxy().invoke( - basePath+"/admin/sysFunction/all", - function(loj) { - for (var i = 0; i < loj.getRowCount(); i++) { - zNodes[i] = createNode(loj.getString(i, "fnId"), - loj.getString(i, "fnParentId"), loj - .getString(i, "fnName")); - } - initTree(zNodes); - }); - } + function initFunctionList() { + var zNodes = new Array(); + $.AjaxProxy().invoke( + basePath+"/admin/sysFunction/all", + function(loj) { + for (var i = 0; i < loj.getRowCount(); i++) { + zNodes[i] = createNode(loj.getString(i, "fnId"), + loj.getString(i, "fnParentId"), loj + .getString(i, "fnName")); + } + initTree(zNodes); + }); + } - function initTree(zNodes) { - var setting = { - check : { + function initTree(zNodes) { + var setting = { + check : { + enable : true, + chkStyle : "checkbox", + radioType : "level", + chkboxType : { + "Y" : "ps", + "N" : "ps" + } + }, + view : { + dblClickExpand : false, + showLine : true, + }, + data : { + simpleData : { enable : true, - chkStyle : "checkbox", - radioType : "level", - chkboxType : { - "Y" : "ps", - "N" : "ps" - } - }, - view : { - dblClickExpand : false, - showLine : true, - }, - data : { - simpleData : { - enable : true, - idKey : "id", - pIdKey : "pId", - rootPId : "" - } - }, + idKey : "id", + pIdKey : "pId", + rootPId : "" + } + }, - }; - tree = $.fn.zTree.init($("#treeDemo"), setting, zNodes); - } + }; + tree = $.fn.zTree.init($("#treeDemo"), setting, zNodes); + } - function createNode(id, parentId, name) { - var o = new Object(); - o.id = id; - o.pId = parentId; - o.name = name; - o.open = true; - //如果是编辑则设置节点选中 + function createNode(id, parentId, name) { + var o = new Object(); + o.id = id; + o.pId = parentId; + o.name = name; + o.open = true; + //如果是编辑则设置节点选中 if(obj.comId!=null){ //var fns = "${obj.comFunctions}"; var fns = obj.comFunctions; @@ -191,9 +202,9 @@ o.checked = true; } } - - return o; - } - </script> + + return o; + } +</script> </body> </html> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/super/sysCompany-list.html b/zq-erp/src/main/resources/templates/views/super/sysCompany-list.html index 9717af5..635c5fb 100644 --- a/zq-erp/src/main/resources/templates/views/super/sysCompany-list.html +++ b/zq-erp/src/main/resources/templates/views/super/sysCompany-list.html @@ -82,6 +82,7 @@ <th data-field="comBossTel">联系电话</th> <th data-field="comAddress">地址</th> <th data-field="comWebUrl" data-formatter="MGrid.getUrl">网站</th> + <th data-field="comCode">公司编码</th> <th data-align="center" data-width="150px" data-field="comId" data-formatter="buidOperate">操作 </th> diff --git a/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java b/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java index 82778ed..d261d4e 100644 --- a/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java +++ b/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java @@ -126,8 +126,6 @@ newSetting11.setCategory("店务配置"); newSettings.add(newSetting11); - - for (ParameterSettings newSetting : newSettings) { List<ParameterSettings> parameterSettings = parameterSettingsDao.selectByModel(newSetting); if(CollectionUtil.isEmpty(parameterSettings)){ -- Gitblit v1.9.1