ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java
@@ -1,6 +1,7 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; @@ -9,10 +10,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.dto.TCrmClinicAuditDTO; import com.ruoyi.system.dto.TCrmClinicDTO; import com.ruoyi.system.model.TCrmBranch; import com.ruoyi.system.model.TCrmClinic; import com.ruoyi.system.model.TCrmSalesperson; import com.ruoyi.system.model.TCrmWarehouse; import com.ruoyi.system.model.*; import com.ruoyi.system.query.TCrmClinicQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.TCrmClinicVO; @@ -20,6 +18,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -46,14 +45,16 @@ private final TCrmWarehouseService crmWarehouseService; private final TCrmSalespersonService crmSalespersonService; private final ISysUserService sysUserService; private final TCrmDeviceService crmDeviceService; @Autowired public TCrmClinicController(TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TCrmBranchService crmBranchService, TCrmWarehouseService crmWarehouseService, TCrmSalespersonService crmSalespersonService, ISysUserService sysUserService) { public TCrmClinicController(TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TCrmBranchService crmBranchService, TCrmWarehouseService crmWarehouseService, TCrmSalespersonService crmSalespersonService, ISysUserService sysUserService, TCrmDeviceService crmDeviceService) { this.crmClinicService = crmClinicService; this.crmSupplierService = crmSupplierService; this.crmBranchService = crmBranchService; this.crmWarehouseService = crmWarehouseService; this.crmSalespersonService = crmSalespersonService; this.sysUserService = sysUserService; this.crmDeviceService = crmDeviceService; } /** @@ -68,13 +69,33 @@ /** * 获取crm诊所管理管理列表 */ @ApiOperation(value = "获取crm诊所管理列表") @ApiOperation(value = "获取crm诊所管理审核分页列表") @PostMapping(value = "/pageAuditList") public R<PageInfo<TCrmClinicVO>> pageAuditList(@RequestBody TCrmClinicQuery query) { return R.ok(crmClinicService.pageAuditList(query)); } /** * 获取crm诊所管理管理列表 */ @ApiOperation(value = "获取crm诊所管理列表",notes = "type 1=设备使用 2=其他") @PostMapping(value = "/list") public R<List<TCrmClinic>> list() { public R<List<TCrmClinic>> list(@RequestParam(value = "type") Integer type) { if(type == 1){ List<TCrmDevice> list = crmDeviceService.list(); LambdaQueryWrapper<TCrmClinic> wrapper = new LambdaQueryWrapper<>(); if(!CollectionUtils.isEmpty(list)){ List<String> clinicIds = list.stream().map(TCrmDevice::getClinicId).collect(Collectors.toList()); wrapper.notIn(TCrmClinic::getId,clinicIds); } wrapper.eq(TCrmClinic::getStatus,3).orderByDesc(TCrmClinic::getCreateTime); return R.ok(crmClinicService.list(wrapper)); }else { return R.ok(crmClinicService.list(Wrappers.lambdaQuery(TCrmClinic.class) .eq(TCrmClinic::getStatus,1) .eq(TCrmClinic::getStatus,3) .orderByDesc(TCrmClinic::getCreateTime))); } } /** * 添加crm诊所管理管理 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java
@@ -24,6 +24,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.Arrays; import java.util.List; @@ -129,6 +131,10 @@ // 订单信息 List<TSysOrderVO> sysOrders = sysOrderService.queryListByAppUserId(id); sysAppUserVO.setSysOrders(sysOrders); if(sysAppUserVO.getBirthTime() != null){ long age = ChronoUnit.YEARS.between(sysAppUserVO.getBirthTime(), LocalDateTime.now()); sysAppUserVO.setAge(age); } return R.ok(sysAppUserVO); } @@ -146,7 +152,7 @@ /** * 查看用户管理详情 */ @ApiOperation(value = "查看用户管理详情") @ApiOperation(value = "查看用户购药详情") @GetMapping(value = "/getOrderByAppUserId") public R<List<TSysOrderVO>> getOrderByAppUserId(@RequestParam String appUserId) { List<TSysOrderVO> sysOrders = sysOrderService.queryListByAppUserId(appUserId); @@ -174,7 +180,7 @@ } /** * 批量删除用户管理 * 分公司管理解冻冻结 */ @Log(title = "用户管理信息-分公司管理解冻冻结", businessType = BusinessType.UPDATE) @ApiOperation(value = "分公司管理解冻冻结",notes = "状态 1=使用中 2=冻结") ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysActivityController.java
New file @@ -0,0 +1,69 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TSysActivity; import com.ruoyi.system.query.TSysActivityQuery; import com.ruoyi.system.service.TSysActivityService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * 热门活动 前端控制器 * </p> * * @author xiaochen * @since 2025-08-20 */ @Api(tags = "热门活动") @RestController @RequestMapping("/t-sys-activity") public class TSysActivityController { private final TSysActivityService sysActivityService; private final TokenService tokenService; @Autowired public TSysActivityController(TSysActivityService sysActivityService, TokenService tokenService) { this.sysActivityService = sysActivityService; this.tokenService = tokenService; } /** * 获取热门活动管理列表 */ @ApiOperation(value = "获取热门活动分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysActivity>> pageList(@RequestBody TSysActivityQuery query) { return R.ok(sysActivityService.pageList(query)); } /** * 获取热门活动管理列表 */ @ApiOperation(value = "获取热门活动列表") @PostMapping(value = "/list") public R<List<TSysActivity>> list() { return R.ok(sysActivityService.list(Wrappers.lambdaQuery(TSysActivity.class).orderByDesc(TSysActivity::getCreateTime))); } /** * 查看热门活动详情 */ @ApiOperation(value = "查看热门活动详情") @GetMapping(value = "/getDetailById") public R<TSysActivity> getDetailById(@RequestParam String id) { return R.ok(sysActivityService.getById(id)); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java
New file @@ -0,0 +1,139 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TSysAppUser; import com.ruoyi.system.model.TSysChronicDisease; import com.ruoyi.system.model.TSysInspection; import com.ruoyi.system.query.TSysAppUserQuery; import com.ruoyi.system.service.TSysAppUserService; import com.ruoyi.system.service.TSysChronicDiseaseService; import com.ruoyi.system.service.TSysInspectionService; import com.ruoyi.system.service.TSysOrderService; import com.ruoyi.system.vo.TSysAppUserVO; import com.ruoyi.system.vo.TSysOrderVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.List; /** * <p> * 用户管理 前端控制器 * </p> * * @author xiaochen * @since 2025-08-20 */ @Api(tags = "用户管理") @RestController @RequestMapping("/t-sys-app-user") public class TSysAppUserController { private final TSysAppUserService sysAppUserService; private final TSysInspectionService sysInspectionService; private final TSysOrderService sysOrderService; private final TSysChronicDiseaseService sysChronicDiseaseService; private final TokenService tokenService; private final RedisCache redisCache; @Autowired public TSysAppUserController(TSysAppUserService sysAppUserService, TSysInspectionService sysInspectionService, TSysOrderService sysOrderService, TSysChronicDiseaseService sysChronicDiseaseService, TokenService tokenService, RedisCache redisCache) { this.sysAppUserService = sysAppUserService; this.sysInspectionService = sysInspectionService; this.sysOrderService = sysOrderService; this.sysChronicDiseaseService = sysChronicDiseaseService; this.tokenService = tokenService; this.redisCache = redisCache; } /** * 获取用户管理管理列表 */ @ApiOperation(value = "获取用户管理分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysAppUserVO>> pageList(@RequestBody TSysAppUserQuery query) { return R.ok(sysAppUserService.pageList(query)); } /** * 修改用户管理 */ @Log(title = "用户管理信息-修改用户管理", businessType = BusinessType.UPDATE) @ApiOperation(value = "修改用户管理") @PostMapping(value = "/update") public R<Boolean> update(@Validated @RequestBody TSysAppUser dto) { return R.ok(sysAppUserService.updateById(dto)); } /** * 查看用户管理详情 */ @ApiOperation(value = "查看用户管理详情") @GetMapping(value = "/getDetailById") public R<TSysAppUserVO> getDetailById(@RequestParam String id) { TSysAppUser sysAppUser = sysAppUserService.getById(id); TSysAppUserVO sysAppUserVO = new TSysAppUserVO(); BeanUtils.copyProperties(sysAppUser, sysAppUserVO); // 查询慢性病 String chronicDiseaseId = sysAppUserVO.getChronicDiseaseId(); if(StringUtils.isNotBlank(chronicDiseaseId)){ String[] split = chronicDiseaseId.split(","); List<TSysChronicDisease> sysChronicDiseases = sysChronicDiseaseService.list(Wrappers.lambdaQuery(TSysChronicDisease.class).in(TSysChronicDisease::getId, Arrays.asList(split))); sysAppUserVO.setSysChronicDiseases(sysChronicDiseases); } // 查询检测信息 List<TSysInspection> sysInspections = sysInspectionService.list(Wrappers.lambdaQuery(TSysInspection.class).eq(TSysInspection::getAppUserId, id)); sysAppUserVO.setSysInspections(sysInspections); // 订单信息 List<TSysOrderVO> sysOrders = sysOrderService.queryListByAppUserId(id); sysAppUserVO.setSysOrders(sysOrders); return R.ok(sysAppUserVO); } /** * 根据用户id查询检测信息 */ @ApiOperation(value = "根据用户id查询检测信息") @GetMapping(value = "/getInspectionByAppUserId") public R<List<TSysInspection>> getInspectionByAppUserId(@RequestParam String appUserId) { // 订单信息 List<TSysInspection> sysInspections = sysInspectionService.list(Wrappers.lambdaQuery(TSysInspection.class).eq(TSysInspection::getAppUserId, appUserId)); return R.ok(sysInspections); } /** * 查看用户管理详情 */ @ApiOperation(value = "查看用户购药详情") @GetMapping(value = "/getOrderByAppUserId") public R<List<TSysOrderVO>> getOrderByAppUserId(@RequestParam String appUserId) { List<TSysOrderVO> sysOrders = sysOrderService.queryListByAppUserId(appUserId); return R.ok(sysOrders); } /** * 退出登录 */ @Log(title = "用户管理信息-退出登录", businessType = BusinessType.UPDATE) @ApiOperation(value = "退出登录") @PostMapping(value = "/loginOut") public R<Boolean> loginOut() { String token = tokenService.getLoginUserApplet().getToken(); redisCache.deleteObject(tokenService.getTokenKey(token)); return R.ok(); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysBannerController.java
New file @@ -0,0 +1,66 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.model.TSysBanner; import com.ruoyi.system.query.TSysBannerQuery; import com.ruoyi.system.service.TSysBannerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * banner管理 前端控制器 * </p> * * @author xiaochen * @since 2025-08-20 */ @Api(tags = "banner管理") @RestController @RequestMapping("/t-sys-banner") public class TSysBannerController { private final TSysBannerService sysBannerService; @Autowired public TSysBannerController(TSysBannerService sysBannerService) { this.sysBannerService = sysBannerService; } /** * 获取banner管理管理列表 */ @ApiOperation(value = "获取banner管理分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysBanner>> pageList(@RequestBody TSysBannerQuery query) { return R.ok(sysBannerService.pageList(query)); } /** * 获取banner管理管理列表 */ @ApiOperation(value = "获取banner管理列表") @PostMapping(value = "/list") public R<List<TSysBanner>> list() { return R.ok(sysBannerService.list(Wrappers.lambdaQuery(TSysBanner.class).orderByDesc(TSysBanner::getCreateTime))); } /** * 查看banner管理详情 */ @ApiOperation(value = "查看banner管理详情") @GetMapping(value = "/getDetailById") public R<TSysBanner> getDetailById(@RequestParam String id) { return R.ok(sysBannerService.getById(id)); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysConfigController.java
New file @@ -0,0 +1,46 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.model.TSysConfig; import com.ruoyi.system.service.TSysConfigService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** * <p> * 系统配置-协议管理-其他设置 前端控制器 * </p> * * @author xiaochen * @since 2025-08-20 */ @Api(tags = "系统配置-协议管理-其他设置") @RestController @RequestMapping("/t-sys-config") public class TSysConfigController { private final TSysConfigService sysConfigService; @Autowired public TSysConfigController(TSysConfigService sysConfigService) { this.sysConfigService = sysConfigService; } /** * 查看系统配置-协议管理-其他设置详情 */ @ApiOperation(value = "查看系统配置-协议管理-其他设置详情",notes = "配置类型 1=用户协议 2=隐私协议 3=其他设置") @GetMapping(value = "/getDetailById") public R<TSysConfig> getDetailById(@RequestParam Integer configType) { TSysConfig sysConfig = sysConfigService.getOne(Wrappers.<TSysConfig>lambdaQuery().eq(TSysConfig::getConfigType, configType) .last("LIMIT 1")); return R.ok(sysConfig); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysEducationalInfoController.java
New file @@ -0,0 +1,74 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TSysEducationalInfo; import com.ruoyi.system.query.TSysEducationalInfoQuery; import com.ruoyi.system.service.TSysEducationalInfoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * 教育资讯 前端控制器 * </p> * * @author xiaochen * @since 2025-08-20 */ @Api(tags = "教育资讯") @RestController @RequestMapping("/t-sys-educational-info") public class TSysEducationalInfoController { private final TSysEducationalInfoService sysEducationalInfoService; private final TokenService tokenService; @Autowired public TSysEducationalInfoController(TSysEducationalInfoService sysEducationalInfoService, TokenService tokenService) { this.sysEducationalInfoService = sysEducationalInfoService; this.tokenService = tokenService; } /** * 获取教育资讯管理列表 */ @ApiOperation(value = "获取教育资讯分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysEducationalInfo>> pageList(@RequestBody TSysEducationalInfoQuery query) { Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); if(roleType == 5){ query.setRoleType(roleType); } return R.ok(sysEducationalInfoService.pageList(query)); } /** * 获取教育资讯管理列表 */ @ApiOperation(value = "获取教育资讯列表") @PostMapping(value = "/list") public R<List<TSysEducationalInfo>> list() { return R.ok(sysEducationalInfoService.list(Wrappers.lambdaQuery(TSysEducationalInfo.class).orderByDesc(TSysEducationalInfo::getCreateTime))); } /** * 查看教育资讯详情 */ @ApiOperation(value = "查看教育资讯详情") @GetMapping(value = "/getDetailById") public R<TSysEducationalInfo> getDetailById(@RequestParam String id) { return R.ok(sysEducationalInfoService.getById(id)); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysProductIntroductionController.java
New file @@ -0,0 +1,74 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TSysProductIntroduction; import com.ruoyi.system.query.TSysProductIntroductionQuery; import com.ruoyi.system.service.TSysProductIntroductionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * 产品介绍 前端控制器 * </p> * * @author xiaochen * @since 2025-08-20 */ @Api(tags = "产品介绍") @RestController @RequestMapping("/t-sys-product-introduction") public class TSysProductIntroductionController { private final TSysProductIntroductionService sysProductIntroductionService; private final TokenService tokenService; @Autowired public TSysProductIntroductionController(TSysProductIntroductionService sysProductIntroductionService, TokenService tokenService) { this.sysProductIntroductionService = sysProductIntroductionService; this.tokenService = tokenService; } /** * 获取产品介绍管理列表 */ @ApiOperation(value = "获取产品介绍分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysProductIntroduction>> pageList(@RequestBody TSysProductIntroductionQuery query) { Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); if(roleType == 5){ query.setRoleType(roleType); } return R.ok(sysProductIntroductionService.pageList(query)); } /** * 获取产品介绍管理列表 */ @ApiOperation(value = "获取产品介绍列表") @PostMapping(value = "/list") public R<List<TSysProductIntroduction>> list() { return R.ok(sysProductIntroductionService.list(Wrappers.lambdaQuery(TSysProductIntroduction.class).orderByDesc(TSysProductIntroduction::getCreateTime))); } /** * 查看产品介绍详情 */ @ApiOperation(value = "查看产品介绍详情") @GetMapping(value = "/getDetailById") public R<TSysProductIntroduction> getDetailById(@RequestParam String id) { return R.ok(sysProductIntroductionService.getById(id)); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysQualificationsController.java
New file @@ -0,0 +1,67 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.model.TSysQualifications; import com.ruoyi.system.query.TSysQualificationsQuery; import com.ruoyi.system.service.TSysQualificationsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * 资质管理 前端控制器 * </p> * * @author xiaochen * @since 2025-08-20 */ @Api(tags = "资质管理") @RestController @RequestMapping("/t-sys-qualifications") public class TSysQualificationsController { private final TSysQualificationsService sysQualificationsService; @Autowired public TSysQualificationsController(TSysQualificationsService sysQualificationsService) { this.sysQualificationsService = sysQualificationsService; } /** * 获取资质管理管理列表 */ @ApiOperation(value = "获取资质管理分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysQualifications>> pageList(@RequestBody TSysQualificationsQuery query) { return R.ok(sysQualificationsService.pageList(query)); } /** * 获取资质管理管理列表 */ @ApiOperation(value = "获取资质管理列表") @PostMapping(value = "/list") public R<List<TSysQualifications>> list() { return R.ok(sysQualificationsService.list(Wrappers.lambdaQuery(TSysQualifications.class).orderByDesc(TSysQualifications::getCreateTime))); } /** * 查看资质管理详情 */ @ApiOperation(value = "查看资质管理详情") @GetMapping(value = "/getDetailById") public R<TSysQualifications> getDetailById(@RequestParam String id) { return R.ok(sysQualificationsService.getById(id)); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
@@ -2,22 +2,21 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.TTenantResp; import com.ruoyi.common.core.domain.entity.TSysUserResp; import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUserApplet; import com.ruoyi.common.core.utils.HttpUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TSysAppUser; import com.ruoyi.system.service.TSysAppUserService; import com.ruoyi.system.utils.wx.body.resp.Code2SessionRespBody; import com.ruoyi.system.utils.wx.body.resq.Code2SessionResqBody; import com.ruoyi.system.utils.wx.model.WeixinProperties; @@ -27,6 +26,7 @@ import com.ruoyi.system.utils.wx.tools.WxUtils; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -57,13 +57,8 @@ private RestTemplate wxRestTemplate; @Resource private RedisService redisService; /** * 上传文件存储在本地的根路径 */ // @Value("${file.upload.location}") // private String localFilePath; @Resource private TSysAppUserService sysAppUserService; @Resource private TokenService tokenService; @Autowired @@ -111,30 +106,29 @@ AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey, data.getIv()); appletUserDecodeData.setOpenId(openid); // 先使用openId和当前手机号进行查询 // TTenant tenant = tTenantService.getOne(Wrappers.lambdaQuery(TTenant.class) // .and(e->e.eq(TTenant::getOpenId, appletUserDecodeData.getOpenId()).or() // .eq(TTenant::getPhone, appletUserDecodeData.getPhoneNumber()))); // if (tenant==null){ //// appUser.setTenantAttributes(); //// appUser.setTenantType(); // tenant = new TTenant(); // tenant.setPhone(appletUserDecodeData.getPhoneNumber()); // tenant.setAccount(appletUserDecodeData.getPhoneNumber()); // tenant.setPassword(SecurityUtils.encryptPassword(appletUserDecodeData.getPhoneNumber().substring(5))); // tenant.setOpenId(appletUserDecodeData.getOpenId()); // // 手机号中间四位替换为* // tenant.setResidentName(appletUserDecodeData.getPhoneNumber().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")); // tTenantService.save(tenant); // } // LoginUserApplet loginUserApplet = new LoginUserApplet(); // TTenantResp tTenantResp = new TTenantResp(); // BeanUtils.copyProperties(tenant, tTenantResp); // tTenantResp.setResidentName(appletUserDecodeData.getPhoneNumber()); // loginUserApplet.setUser(tTenantResp); // loginUserApplet.setUserId(tenant.getId()); TSysAppUser sysAppUser = sysAppUserService.getOne(Wrappers.lambdaQuery(TSysAppUser.class) .and(e->e.eq(TSysAppUser::getOpenId, appletUserDecodeData.getOpenId()).or() .eq(TSysAppUser::getPhone, appletUserDecodeData.getPhoneNumber()))); if (sysAppUser==null){ // appUser.setTenantAttributes(); // appUser.setTenantType(); sysAppUser = new TSysAppUser(); sysAppUser.setPhone(appletUserDecodeData.getPhoneNumber()); // sysAppUser.setAccount(appletUserDecodeData.getPhoneNumber()); // sysAppUser.setPassword(SecurityUtils.encryptPassword(appletUserDecodeData.getPhoneNumber().substring(5))); sysAppUser.setOpenId(appletUserDecodeData.getOpenId()); // 手机号中间四位替换为* sysAppUser.setNickName(appletUserDecodeData.getPhoneNumber().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")); sysAppUserService.save(sysAppUser); } LoginUserApplet loginUserApplet = new LoginUserApplet(); TSysUserResp sysUserResp = new TSysUserResp(); BeanUtils.copyProperties(sysAppUser, sysUserResp); loginUserApplet.setUser(sysUserResp); loginUserApplet.setUserId(sysAppUser.getId()); Map<String, Object> tokenInfos = new HashMap<>(); // tokenInfos.put("token",tokenService.createTokenApplet(loginUserApplet)); // tokenInfos.put("info",loginUserApplet); tokenInfos.put("token",tokenService.createTokenApplet(loginUserApplet)); tokenInfos.put("info",loginUserApplet); return R.ok(tokenInfos); } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TSysUserResp.java
New file @@ -0,0 +1,61 @@ package com.ruoyi.common.core.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; import java.time.LocalDate; import java.time.LocalDateTime; /** * <p> * 租户 * </p> * * @author xiaochen * @since 2025-01-20 */ @Data @EqualsAndHashCode(callSuper = false) @ApiModel(value="TTenant对象", description="登录返回") public class TSysUserResp { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.ASSIGN_ID) private String id; @ApiModelProperty(value = "用户姓名") private String nickName; @ApiModelProperty(value = "手机号") private String phone; @ApiModelProperty(value = "出生日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime birthTime; @ApiModelProperty(value = "性别 1=男 2=女") private Integer sex; @ApiModelProperty(value = "微信openid") private String openId; @ApiModelProperty(value = "慢性病id,逗号分割") private String chronicDiseaseId; @ApiModelProperty(value = "状态 1=使用中 2=冻结") private Integer status; @ApiModelProperty(value = "上次短信提醒时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime lastReminderTime; } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TTenantResp.java
File was deleted ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUserApplet.java
@@ -2,7 +2,7 @@ import com.alibaba.fastjson2.annotation.JSONField; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.TTenantResp; import com.ruoyi.common.core.domain.entity.TSysUserResp; import lombok.Data; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -73,20 +73,20 @@ /** * 用户信息 */ private TTenantResp user; private TSysUserResp user; public LoginUserApplet() { } public LoginUserApplet(TTenantResp user, Set<String> permissions) public LoginUserApplet(TSysUserResp user, Set<String> permissions) { this.user = user; this.permissions = permissions; } public LoginUserApplet(String userId, Long deptId, TTenantResp user, Set<String> permissions) public LoginUserApplet(String userId, Long deptId, TSysUserResp user, Set<String> permissions) { this.userId = userId; this.deptId = deptId; @@ -128,13 +128,13 @@ @Override public String getPassword() { return user.getPassword(); return null; } @Override public String getUsername() { return user.getResidentName(); return user.getNickName(); } /** ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -5,7 +5,7 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.TTenantResp; import com.ruoyi.common.core.domain.entity.TSysUserResp; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUserApplet; import com.ruoyi.common.core.redis.RedisCache; ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
@@ -353,7 +353,7 @@ return token; } private String getTokenKey(String uuid) public String getTokenKey(String uuid) { return CacheConstants.LOGIN_TOKEN_KEY + uuid; } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmClinicMapper.java
@@ -26,5 +26,12 @@ * @return */ List<TCrmClinicVO> pageList(@Param("query") TCrmClinicQuery query, @Param("pageInfo")PageInfo<TCrmClinicVO> pageInfo); /** * 分页列表 * @param query * @param pageInfo * @return */ List<TCrmClinicVO> pageAuditList(@Param("query") TCrmClinicQuery query, @Param("pageInfo")PageInfo<TCrmClinicVO> pageInfo); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysOrderMapper.java
@@ -20,8 +20,8 @@ /** * 根据appUserId查询订单列表 * * @param id appUserId * @param appUserId * @return 订单列表 */ List<TSysOrderVO> queryListByAppUserId(@Param("id") String id); List<TSysOrderVO> queryListByAppUserId(@Param("appUserId") String appUserId); } ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmClinicService.java
@@ -24,6 +24,12 @@ * @return */ PageInfo<TCrmClinicVO> pageList(TCrmClinicQuery query); /** * 获取crm诊所管理审核分页列表 * @param query * @return */ PageInfo<TCrmClinicVO> pageAuditList(TCrmClinicQuery query); /** * 添加crm诊所管理 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicServiceImpl.java
@@ -46,6 +46,17 @@ } @Override public PageInfo<TCrmClinicVO> pageAuditList(TCrmClinicQuery query) { // TODO 业绩状态查询处理 PageInfo<TCrmClinicVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TCrmClinicVO> list = this.baseMapper.pageAuditList(query,pageInfo); pageInfo.setRecords(list); return pageInfo; } @Override public R<Boolean> addClinic(TCrmClinicDTO dto) { // 判断账号是否已存在 SysUser sysUser = sysUserService.selectUserByUserName(dto.getPhone()); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysAppUserServiceImpl.java
@@ -17,6 +17,8 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.List; import java.util.stream.Collectors; @@ -38,6 +40,16 @@ public PageInfo<TSysAppUserVO> pageList(TSysAppUserQuery query) { PageInfo<TSysAppUserVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TSysAppUserVO> list = this.baseMapper.pageList(query,pageInfo); if(CollectionUtils.isEmpty(list)){ return pageInfo; } // 年龄计算 list.forEach(tSysAppUserVO -> { if(tSysAppUserVO.getBirthTime() != null){ long age = ChronoUnit.YEARS.between(tSysAppUserVO.getBirthTime(), LocalDateTime.now()); tSysAppUserVO.setAge(age); } }); pageInfo.setRecords(list); return pageInfo; } ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmClinicVO.java
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel(value = "crm诊所管理VO") public class TCrmClinicVO extends TCrmClinic { @@ -18,4 +20,10 @@ @ApiModelProperty(value = "仓库名称") private String warehouseName; @ApiModelProperty(value = "当月采购金额") private BigDecimal monthPurchaseAmount; @ApiModelProperty(value = "业绩状态 1=未达成 2=已达成") private Integer performanceStatus; } ruoyi-system/src/main/java/com/ruoyi/system/vo/TSysAppUserVO.java
@@ -31,4 +31,7 @@ @ApiModelProperty(value = "慢性病名称拼接") private String sysChronicDiseaseNames; @ApiModelProperty(value = "年龄") private Long age; } ruoyi-system/src/main/resources/mapper/system/TCrmClinicMapper.xml
@@ -65,5 +65,42 @@ </where> ORDER BY tcc.create_time DESC </select> <select id="pageAuditList" resultType="com.ruoyi.system.vo.TCrmClinicVO"> SELECT tcc.id, tcc.branch_id, tcc.salesperson_id, tcc.warehouse_id,tcc.user_id, tcc.clinic_name, tcc.person_charge_name, tcc.phone, tcc.low_procurement_money, tcc.clinic_address, tcc.qualification_picture, tcc.status,tcc.audit_remark, tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled, tcb.branch_name, tcs.salesperson_name, tcw.warehouse_name from t_crm_clinic tcc left join t_crm_branch tcb on tcc.branch_id = tcb.id left join t_crm_salesperson tcs on tcc.salesperson_id = tcs.id left join t_crm_warehouse tcw on tcc.warehouse_id = tcw.id <where> <if test="query.clinicName != null and query.clinicName != ''"> and tcc.clinic_name like concat('%',#{query.clinicName},'%') </if> <if test="query.personChargeName != null and query.personChargeName != ''"> and tcc.person_charge_name like concat('%',#{query.personChargeName},'%') </if> <if test="query.phone != null and query.phone != ''"> and tcc.phone like concat('%',#{query.phone},'%') </if> <if test="query.branchId != null and query.branchId != ''"> and tcc.branch_id = #{query.branchId} </if> <if test="query.salespersonId != null and query.salespersonId != ''"> and tcc.salesperson_id = #{query.salespersonId} </if> <!-- <if test="query.performanceStatus != null">--> <!-- and tcc.salesperson_id = #{query.performanceStatus}--> <!-- </if>--> <if test="query.status != null"> and tcc.status = #{query.status} </if> and tcc.status in (1,2) AND tcc.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> ORDER BY tcc.create_time DESC </select> </mapper> ruoyi-system/src/main/resources/mapper/system/TSysAppUserMapper.xml
@@ -68,6 +68,7 @@ <if test="query.inspectionId != null and query.inspectionId != ''"> and FIND_IN_SET(#{query.inspectionId},tsau.chronic_disease_id) </if> AND tsau.chronic_disease_id IS NOT NULL AND tsau.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> ORDER BY tsau.create_time DESC