From 574c8b424e147d786c06df877d964e07ec580999 Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Wed, 19 May 2021 19:18:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E7=B2=89=E7=BB=9F=E8=AE=A1=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=A2=E6=88=B7=E6=89=8B=E6=9C=BA=E5=8F=B7?= =?UTF-8?q?=E6=97=B6=E6=9B=B4=E6=96=B0=E4=B8=8B=E5=BE=AE=E4=BF=A1=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=AF=B9=E5=BA=94=E7=9A=84=E5=AE=A2=E6=88=B7ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/SysLiveSchedulController.java | 9 ++ .../custom/domain/SysImportFanRecord.java | 19 +++++ .../mapper/SysImportFanRecordMapper.java | 7 ++ .../mapper/SysImportFanWxAccountMapper.java | 7 ++ .../custom/mapper/SysWxUserInfoMapper.java | 8 ++ .../ISysImportFanWxAccountService.java | 7 ++ .../custom/service/ISysWxUserInfoService.java | 7 ++ .../impl/SysCustomerHealthyServiceImpl.java | 5 +- .../service/impl/SysCustomerServiceImpl.java | 32 ++++++- .../impl/SysImportFanRecordServiceImpl.java | 30 ++++++- .../SysImportFanWxAccountServiceImpl.java | 9 ++ .../impl/SysWxUserInfoServiceImpl.java | 9 ++ .../custom/SysImportFanRecordMapper.xml | 57 +++++++++++-- .../custom/SysImportFanWxAccountMapper.xml | 5 ++ .../mapper/custom/SysWxUserInfoMapper.xml | 6 ++ stdiet-ui/src/api/custom/liveSchedul.js | 10 +++ .../ImportFanRecord/ImportFan/index.vue | 84 +++++++++++++++++-- .../views/custom/importFanRecord/index.vue | 8 +- 18 files changed, 299 insertions(+), 20 deletions(-) diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysLiveSchedulController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysLiveSchedulController.java index 09a427db4..dff6fa13f 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysLiveSchedulController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysLiveSchedulController.java @@ -233,4 +233,13 @@ public class SysLiveSchedulController extends BaseController public AjaxResult copyLastTimeLiveSchedul(){ return sysLiveSchedulService.copyLastTimeLiveSchedul(); } + + /** + * 根据日期查询直播记录 + */ + @GetMapping(value = "/getAllLiveSchedulByDate") + public AjaxResult getAllLiveSchedulByDate(SysLiveSchedul sysLiveSchedul){ + List list = sysLiveSchedulService.selectSysLiveSchedulList(sysLiveSchedul); + return AjaxResult.success(list); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysImportFanRecord.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysImportFanRecord.java index cb51a6d31..7c9222937 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysImportFanRecord.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysImportFanRecord.java @@ -1,9 +1,13 @@ package com.stdiet.custom.domain; import java.util.Date; +import java.util.List; +import java.util.Map; + import com.fasterxml.jackson.annotation.JsonFormat; import com.stdiet.common.annotation.Excel; import com.stdiet.common.core.domain.BaseEntity; +import lombok.Data; /** * 导粉管理对象 sys_import_fan_record @@ -11,6 +15,7 @@ import com.stdiet.common.core.domain.BaseEntity; * @author xzj * @date 2021-05-17 */ +@Data public class SysImportFanRecord extends BaseEntity { private static final long serialVersionUID = 1L; @@ -33,4 +38,18 @@ public class SysImportFanRecord extends BaseEntity /** 删除标识,0未删除 1已删除 */ private Long delFlag; + + //微信ID + private Long wxAccountId; + + //进粉数量 + private Long fanNum; + + private String importFanChannelName; + + private String liveRoomName; + + private String liveNutritionistName; + + private List> wxAccountList; } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanRecordMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanRecordMapper.java index 6b1c809a2..eb430d355 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanRecordMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanRecordMapper.java @@ -58,4 +58,11 @@ public interface SysImportFanRecordMapper * @return 结果 */ public int deleteSysImportFanRecordByIds(Long[] ids); + + /** + * 根据日期渠道、直播间获取进粉记录 + * @param sysImportFanRecord + * @return + */ + public SysImportFanRecord getFanRecordByChannelLive(SysImportFanRecord sysImportFanRecord); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanWxAccountMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanWxAccountMapper.java index cce3cd805..0d441f291 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanWxAccountMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanWxAccountMapper.java @@ -58,4 +58,11 @@ public interface SysImportFanWxAccountMapper * @return 结果 */ public int deleteSysImportFanWxAccountByIds(Long[] ids); + + /** + * 根据导粉记录ID、微信ID查询对应微信记录 + * @param sysImportFanWxAccount + * @return + */ + public SysImportFanWxAccount getWxAccountByFanRecordId(SysImportFanWxAccount sysImportFanWxAccount); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxUserInfoMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxUserInfoMapper.java index 7081917fb..724fa532a 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxUserInfoMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxUserInfoMapper.java @@ -2,6 +2,7 @@ package com.stdiet.custom.mapper; import java.util.List; import com.stdiet.custom.domain.SysWxUserInfo; +import org.apache.ibatis.annotations.Param; /** * 微信用户Mapper接口 @@ -62,4 +63,11 @@ public interface SysWxUserInfoMapper * @return 结果 */ public int deleteSysWxUserInfoByIds(String[] openids); + + /** + * 根据手机号查询微信用户 + * @param phone + * @return + */ + public SysWxUserInfo getSysWxUserInfoByPhone(@Param("phone")String phone); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysImportFanWxAccountService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysImportFanWxAccountService.java index 435c2a990..1b0a3f36c 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysImportFanWxAccountService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysImportFanWxAccountService.java @@ -58,4 +58,11 @@ public interface ISysImportFanWxAccountService * @return 结果 */ public int deleteSysImportFanWxAccountById(Long id); + + /** + * 根据导粉记录ID、微信ID查询对应微信记录 + * @param sysImportFanWxAccount + * @return + */ + public SysImportFanWxAccount getWxAccountByFanRecordId(SysImportFanWxAccount sysImportFanWxAccount); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxUserInfoService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxUserInfoService.java index 3dc8acb61..f009113f0 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxUserInfoService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxUserInfoService.java @@ -63,5 +63,12 @@ public interface ISysWxUserInfoService */ public int deleteSysWxUserInfoById(String openid); + /** + * 根据手机号查询微信用户 + * @param phone + * @return + */ + public SysWxUserInfo getSysWxUserInfoByPhone(String phone); + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java index 8170cd5db..123a546d7 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java @@ -14,6 +14,7 @@ import com.stdiet.custom.domain.SysCustomer; import com.stdiet.custom.domain.SysCustomerPhysicalSigns; import com.stdiet.custom.dto.request.HealthyDetailRequest; import com.stdiet.custom.dto.response.NutritionalCalories; +import com.stdiet.custom.mapper.SysCustomerMapper; import com.stdiet.custom.service.ISysCustomerService; import com.stdiet.custom.utils.NutritionalUtils; import com.stdiet.custom.utils.PdfUtils; @@ -36,7 +37,7 @@ public class SysCustomerHealthyServiceImpl implements ISysCustomerHealthyService private SysCustomerHealthyMapper sysCustomerHealthyMapper; @Autowired - private ISysCustomerService sysCustomerService; + private SysCustomerMapper sysCustomerMapper; public static final String reportDownFileNameFormat = "%s超重%s斤%s"; @@ -78,7 +79,7 @@ public class SysCustomerHealthyServiceImpl implements ISysCustomerHealthyService return AjaxResult.error("客户不存在"); } //判断客户是否存在 - SysCustomer sysCustomer = sysCustomerService.selectSysCustomerById(Long.parseLong(customerId)); + SysCustomer sysCustomer = sysCustomerMapper.selectSysCustomerById(Long.parseLong(customerId)); if(sysCustomer == null){ return AjaxResult.error("客户不存在"); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java index eb3851d4c..3bc9a37d9 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java @@ -6,10 +6,14 @@ import com.stdiet.common.utils.sign.AesUtils; import com.stdiet.custom.domain.SysCustomer; import com.stdiet.custom.domain.SysCustomerHealthy; import com.stdiet.custom.domain.SysCustomerPhysicalSigns; +import com.stdiet.custom.domain.SysWxUserInfo; import com.stdiet.custom.mapper.SysCustomerMapper; import com.stdiet.custom.mapper.SysCustomerPhysicalSignsMapper; +import com.stdiet.custom.mapper.SysWxUserInfoMapper; import com.stdiet.custom.service.ISysCustomerService; +import com.stdiet.custom.service.ISysWxUserInfoService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -38,6 +42,9 @@ public class SysCustomerServiceImpl implements ISysCustomerService { @Autowired private SysCustomerPhysicalSignsServiceImpl sysCustomerPhysicalSignsService; + @Autowired + private ISysWxUserInfoService sysWxUserInfoService; + /** * 查询客户信息 * @@ -69,7 +76,11 @@ public class SysCustomerServiceImpl implements ISysCustomerService { @Override public int insertSysCustomer(SysCustomer sysCustomer) { sysCustomer.setCreateTime(DateUtils.getNowDate()); - return sysCustomerMapper.insertSysCustomer(sysCustomer); + int row = sysCustomerMapper.insertSysCustomer(sysCustomer); + if(row > 0){ + updateWxInfoMessage(sysCustomer); + } + return row; } /** @@ -81,7 +92,11 @@ public class SysCustomerServiceImpl implements ISysCustomerService { @Override public int updateSysCustomer(SysCustomer sysCustomer) { sysCustomer.setUpdateTime(DateUtils.getNowDate()); - return sysCustomerMapper.updateSysCustomer(sysCustomer); + int row = sysCustomerMapper.updateSysCustomer(sysCustomer); + if(row > 0){ + updateWxInfoMessage(sysCustomer); + } + return row; } /** @@ -177,4 +192,17 @@ public class SysCustomerServiceImpl implements ISysCustomerService { public SysCustomer getCustomerByOpenId(String openid){ return sysCustomerMapper.getCustomerByOpenId(openid); } + + @Async + public void updateWxInfoMessage(SysCustomer newCustomer){ + if(newCustomer == null || newCustomer.getId() == null || StringUtils.isEmpty(newCustomer.getPhone())){ + return; + } + //根据手机号查询微信用户记录 + SysWxUserInfo wxUserInfo = sysWxUserInfoService.getSysWxUserInfoByPhone(newCustomer.getPhone()); + if(wxUserInfo != null && (wxUserInfo.getCusId() == null || wxUserInfo.getCusId().longValue() != newCustomer.getId())){ + wxUserInfo.setCusId(newCustomer.getId()); + sysWxUserInfoService.updateSysWxUserInfo(wxUserInfo); + } + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanRecordServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanRecordServiceImpl.java index 4c034568a..8ccb0d8e8 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanRecordServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanRecordServiceImpl.java @@ -1,7 +1,10 @@ package com.stdiet.custom.service.impl; +import java.util.Date; import java.util.List; import com.stdiet.common.utils.DateUtils; +import com.stdiet.custom.domain.SysImportFanWxAccount; +import com.stdiet.custom.service.ISysImportFanWxAccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.stdiet.custom.mapper.SysImportFanRecordMapper; @@ -20,6 +23,9 @@ public class SysImportFanRecordServiceImpl implements ISysImportFanRecordService @Autowired private SysImportFanRecordMapper sysImportFanRecordMapper; + @Autowired + private ISysImportFanWxAccountService sysImportFanWxAccountService; + /** * 查询导粉管理 * @@ -54,7 +60,29 @@ public class SysImportFanRecordServiceImpl implements ISysImportFanRecordService public int insertSysImportFanRecord(SysImportFanRecord sysImportFanRecord) { sysImportFanRecord.setCreateTime(DateUtils.getNowDate()); - return sysImportFanRecordMapper.insertSysImportFanRecord(sysImportFanRecord); + //根据账号渠道、直播间判断是否已存在该渠道的导粉记录 + SysImportFanRecord record = sysImportFanRecordMapper.getFanRecordByChannelLive(sysImportFanRecord); + int row = 0; + if(record == null){ + row = sysImportFanRecordMapper.insertSysImportFanRecord(sysImportFanRecord); + } + if(record != null || row > 0){ + //添加微信号对应记录 + SysImportFanWxAccount sysImportFanWxAccount = new SysImportFanWxAccount(); + sysImportFanWxAccount.setImportFanRecordId(record != null ? record.getId() : sysImportFanRecord.getId()); + sysImportFanWxAccount.setImportWxAccountId(sysImportFanRecord.getWxAccountId()); + sysImportFanWxAccount.setImportFanNum(sysImportFanRecord.getFanNum()); + sysImportFanWxAccount.setCreateTime(new Date()); + //根据微信号、导粉记录查询是否存在 + SysImportFanWxAccount oldFanWxAccount = sysImportFanWxAccountService.getWxAccountByFanRecordId(sysImportFanWxAccount); + if(oldFanWxAccount == null){ + row = sysImportFanWxAccountService.insertSysImportFanWxAccount(sysImportFanWxAccount); + }else{ + oldFanWxAccount.setImportFanNum((oldFanWxAccount.getImportFanNum() == null ? 0 : oldFanWxAccount.getImportFanNum()) + sysImportFanWxAccount.getImportFanNum()); + row = sysImportFanWxAccountService.updateSysImportFanWxAccount(oldFanWxAccount); + } + } + return row; } /** diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanWxAccountServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanWxAccountServiceImpl.java index 23741a849..44e904a99 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanWxAccountServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanWxAccountServiceImpl.java @@ -93,4 +93,13 @@ public class SysImportFanWxAccountServiceImpl implements ISysImportFanWxAccountS { return sysImportFanWxAccountMapper.deleteSysImportFanWxAccountById(id); } + + /** + * 根据导粉记录ID、微信ID查询对应微信记录 + * @param sysImportFanWxAccount + * @return + */ + public SysImportFanWxAccount getWxAccountByFanRecordId(SysImportFanWxAccount sysImportFanWxAccount){ + return sysImportFanWxAccountMapper.getWxAccountByFanRecordId(sysImportFanWxAccount); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxUserInfoServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxUserInfoServiceImpl.java index 94f1ffb95..bef991ad0 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxUserInfoServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxUserInfoServiceImpl.java @@ -97,4 +97,13 @@ public class SysWxUserInfoServiceImpl implements ISysWxUserInfoService { public int deleteSysWxUserInfoById(String openid) { return sysWxUserInfoMapper.deleteSysWxUserInfoById(openid); } + + /** + * 根据手机号查询微信用户 + * @param phone + * @return + */ + public SysWxUserInfo getSysWxUserInfoByPhone(String phone){ + return sysWxUserInfoMapper.getSysWxUserInfoByPhone(phone); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysImportFanRecordMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysImportFanRecordMapper.xml index 83e5fa780..b99b2fd55 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysImportFanRecordMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysImportFanRecordMapper.xml @@ -14,18 +14,47 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, import_fan_date, import_fan_channel, import_fan_live, create_time, create_by, update_time, update_by, del_flag from sys_import_fan_record - + select fc.id, fc.import_fan_date, fc.import_fan_channel, fc.import_fan_live, fc.create_time, + ca.dict_label as import_fan_channel_name, slt.dict_label as live_room_name,su_nutritionist.nick_name as live_nutritionist_name + from sys_import_fan_record as fc + left join (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cus_account') AS ca ON ca.dict_value = fc.import_fan_channel + left join sys_live_schedul as slc on slc.id = fc.import_fan_live and slc.del_flag = 0 + left join (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'sys_live_type') AS slt ON slt.dict_value = slc.live_room + left join sys_user as su_nutritionist on su_nutritionist.user_id = slc.live_nutritionist_id and su_nutritionist.del_flag = 0 + where fc.del_flag = 0 + and fc.import_fan_date = #{importFanDate} + and fc.import_fan_channel = #{importFanChannel} + and fc.import_fan_live = #{importFanLive} + select * from sys_import_fan_record where del_flag = 0 and import_fan_date = #{importFanDate} and import_fan_channel = #{importFanChannel} + and import_fan_live = #{importFanLive} + order by id desc limit 1 + + + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysImportFanWxAccountMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysImportFanWxAccountMapper.xml index 9df906444..c3127ce6d 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysImportFanWxAccountMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysImportFanWxAccountMapper.xml @@ -82,4 +82,9 @@ + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml index f5d31376b..795a64be2 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml @@ -129,4 +129,10 @@ + + + \ No newline at end of file diff --git a/stdiet-ui/src/api/custom/liveSchedul.js b/stdiet-ui/src/api/custom/liveSchedul.js index 716796df0..61318fca8 100644 --- a/stdiet-ui/src/api/custom/liveSchedul.js +++ b/stdiet-ui/src/api/custom/liveSchedul.js @@ -71,4 +71,14 @@ export function copyLastTimeLiveSchedul() { }) } +// 根据日期查询直播记录 +export function getAllLiveSchedulByDate(data) { + return request({ + url: '/custom/liveSchedul/getAllLiveSchedulByDate', + method: 'get', + params: data + }) +} + + diff --git a/stdiet-ui/src/components/ImportFanRecord/ImportFan/index.vue b/stdiet-ui/src/components/ImportFanRecord/ImportFan/index.vue index eb5a9c28c..ff32af561 100644 --- a/stdiet-ui/src/components/ImportFanRecord/ImportFan/index.vue +++ b/stdiet-ui/src/components/ImportFanRecord/ImportFan/index.vue @@ -1,16 +1,16 @@ - - + + + +