打卡后台,小程序接口

Merge pull request  from 德仔/xzj
This commit is contained in:
德仔 2021-03-23 18:48:39 +08:00 committed by Gitee
commit ea25149d0b
14 changed files with 409 additions and 271 deletions

@ -2,7 +2,11 @@ package com.stdiet.web.controller;
import com.stdiet.common.config.AliyunOSSConfig;
import com.stdiet.common.utils.oss.AliyunOSSUtils;
import com.stdiet.custom.domain.SysWxUserInfo;
import com.stdiet.custom.domain.SysWxUserLog;
import com.stdiet.custom.mapper.SysCustomerPhysicalSignsMapper;
import com.stdiet.custom.mapper.SysWxUserInfoMapper;
import com.stdiet.custom.mapper.SysWxUserLogMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
@ -10,18 +14,36 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.List;
@Component
@Order(value = 1)
public class MyApplicationRunner implements ApplicationRunner {
@Autowired
private SysCustomerPhysicalSignsMapper sysCustomerPhysicalSignsMapper;
private SysWxUserLogMapper sysWxUserLogMapper;
@Autowired
private SysWxUserInfoMapper sysWxUserInfoMapper;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("项目启动调用方法");
// String path = AliyunOSSUtils.uploadFileInputSteam(AliyunOSSConfig.casePrefix,"ceshi.png",new File("D:\\ceshi.png"));
// System.out.println(path);
/*System.out.println("项目启动调用方法");
List<String> phoneList = sysWxUserLogMapper.getAllSysWxUserLogPhone();
SysWxUserLog sysWxUserLog = new SysWxUserLog();
if(phoneList.size() > 0){
for (String phone : phoneList) {
System.out.println(phone);
SysWxUserInfo sysWxUserInfo = new SysWxUserInfo();
sysWxUserInfo.setPhone(phone);
List<SysWxUserInfo> list = sysWxUserInfoMapper.selectSysWxUserInfoList(sysWxUserInfo);
if(list != null && list.size() > 0){
sysWxUserLog.setOpenid(list.get(0).getOpenid());
sysWxUserLog.setPhone(phone);
sysWxUserLogMapper.updateSysWxUserLog(sysWxUserLog);
}
}
}*/
}
}

@ -14,6 +14,7 @@ import com.stdiet.custom.page.WxLogInfo;
import com.stdiet.custom.service.ISysOrderService;
import com.stdiet.custom.service.ISysWxUserInfoService;
import com.stdiet.custom.service.ISysWxUserLogService;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@ -47,14 +48,8 @@ public class SysWxUserLogController extends BaseController {
List<SysWxUserLog> list = sysWxUserLogService.selectSysWxUserLogList(sysWxUserLog);
for (SysWxUserLog userLog : list) {
if(userLog.getCustomerMessage() != null){
String[] message = userLog.getCustomerMessage().split(",");
userLog.setCustomer(message[0]);
userLog.setNutritionist(message.length > 1 ? message[1] : "");
}
if (StringUtils.isNotEmpty(userLog.getPhone())) {
userLog.setPhone(StringUtils.hiddenPhoneNumber(userLog.getPhone()));
//userLog.setPhone(userLog.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
}
}
@ -69,6 +64,11 @@ public class SysWxUserLogController extends BaseController {
@GetMapping("/export")
public AjaxResult export(SysWxUserLog sysWxUserLog) {
List<SysWxUserLog> list = sysWxUserLogService.selectSysWxUserLogList(sysWxUserLog);
for (SysWxUserLog userLog : list) {
if (StringUtils.isNotEmpty(userLog.getPhone())) {
userLog.setPhone(StringUtils.hiddenPhoneNumber(userLog.getPhone()));
}
}
ExcelUtil<SysWxUserLog> util = new ExcelUtil<SysWxUserLog>(SysWxUserLog.class);
return util.exportExcel(list, "wxUserLog");
}
@ -77,9 +77,11 @@ public class SysWxUserLogController extends BaseController {
* 获取微信用户记录详细信息
*/
@PreAuthorize("@ss.hasPermi('custom:wxUserLog:query')")
@GetMapping(value = "/{openid}")
public AjaxResult getInfo(@PathVariable("openid") String openid) {
return AjaxResult.success(sysWxUserLogService.selectSysWxUserLogById(openid));
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id) {
SysWxUserLog sysWxUserLog = sysWxUserLogService.selectSysWxUserLogById(id);
System.out.println(sysWxUserLog.getPhone());
return AjaxResult.success(sysWxUserLog);
}
/**
@ -89,7 +91,9 @@ public class SysWxUserLogController extends BaseController {
@Log(title = "微信用户记录", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SysWxUserLog sysWxUserLog) {
return toAjax(sysWxUserLogService.insertSysWxUserLog(sysWxUserLog));
//暂时不开放后台增加打卡因为无法获取到openid
//return toAjax(sysWxUserLogService.insertSysWxUserLog(sysWxUserLog));
return AjaxResult.error("新增打卡功能暂时关闭");
}
/**
@ -99,7 +103,15 @@ public class SysWxUserLogController extends BaseController {
@Log(title = "微信用户记录", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SysWxUserLog sysWxUserLog) {
return toAjax(sysWxUserLogService.updateSysWxUserLog(sysWxUserLog));
if( sysWxUserLog != null && StringUtils.isNotEmpty(sysWxUserLog.getOpenid())){
SysWxUserLog dateLog = sysWxUserLogService.selectSysWxUserLogByDateAndOpenId(sysWxUserLog);
if(dateLog != null && dateLog.getId().intValue() != sysWxUserLog.getId().intValue()){
return AjaxResult.error("今日该用户已打卡,无法重复打卡");
}
return toAjax(sysWxUserLogService.updateSysWxUserLog(sysWxUserLog));
}else{
return AjaxResult.error("修改失败");
}
}
/**
@ -107,9 +119,9 @@ public class SysWxUserLogController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('custom:wxUserLog:remove')")
@Log(title = "微信用户记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{openids}")
public AjaxResult remove(@PathVariable String[] openids) {
return toAjax(sysWxUserLogService.deleteSysWxUserLogByIds(openids));
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids) {
return toAjax(sysWxUserLogService.deleteSysWxUserLogByIds(ids));
}
@GetMapping(value = "/wx/logs/list")

@ -0,0 +1,181 @@
package com.stdiet.web.controller.custom;
import com.itextpdf.io.util.DateTimeUtil;
import com.stdiet.common.core.controller.BaseController;
import com.stdiet.common.core.domain.AjaxResult;
import com.stdiet.common.core.page.TableDataInfo;
import com.stdiet.common.utils.DateUtils;
import com.stdiet.common.utils.StringUtils;
import com.stdiet.common.utils.oss.AliyunOSSUtils;
import com.stdiet.common.utils.sign.AesUtils;
import com.stdiet.custom.domain.*;
import com.stdiet.custom.dto.response.CustomerCaseResponse;
import com.stdiet.custom.page.WxLogInfo;
import com.stdiet.custom.service.ISysCustomerCaseService;
import com.stdiet.custom.service.ISysOrderService;
import com.stdiet.custom.service.ISysWxUserInfoService;
import com.stdiet.custom.service.ISysWxUserLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*;
/**
* 微信小程序统一Controller
*/
@RestController
@RequestMapping("/wx/applet")
public class WechatAppletController extends BaseController {
@Autowired
private ISysCustomerCaseService sysCustomerCaseService;
@Autowired
private ISysWxUserLogService sysWxUserLogService;
@Autowired
private ISysWxUserInfoService sysWxUserInfoService;
@Autowired
private ISysOrderService sysOrderService;
/**
* 查询微信小程序中展示的客户案例
*/
@GetMapping("/caseList")
public TableDataInfo caseList(SysCustomerCase sysCustomerCase)
{
startPage();
sysCustomerCase.setKeywordArray(StringUtils.isNotEmpty(sysCustomerCase.getKeyword()) ? sysCustomerCase.getKeyword().split(",") : null);
List<CustomerCaseResponse> list = sysCustomerCaseService.getWxCustomerCaseList(sysCustomerCase);
//处理ID加密
dealIdEnc(list);
return getDataTable(list);
}
/**
* 查询客户案例文件列表
*/
@GetMapping("/getFileByCaseId")
public AjaxResult getFileByCaseId(@RequestParam("caseId")String caseId)
{
Long id = StringUtils.isNotEmpty(caseId) ? Long.parseLong(AesUtils.decrypt(caseId, null)) : null;
CustomerCaseResponse customerCaseResponse = new CustomerCaseResponse();
customerCaseResponse.setId(caseId);
if(id != null){
List<SysCustomerCaseFile> list = sysCustomerCaseService.getFileListByCaseId(id);
List<String> fileUrl = new ArrayList<>();
for (SysCustomerCaseFile caseFile : list) {
fileUrl.add(caseFile.getFileUrl());
}
List<String> downUrlList = AliyunOSSUtils.generatePresignedUrl(fileUrl);
customerCaseResponse.setFileList(downUrlList);
}else{
customerCaseResponse.setFileList(new ArrayList<>());
}
return AjaxResult.success(customerCaseResponse);
}
/**
* 同步客户信息返回订单数量
* @param sysWxUserInfo
* @return
*/
@PostMapping("/synchroCustomerInfo")
public AjaxResult synchroCustomerInfo(@RequestBody SysWxUserInfo sysWxUserInfo) {
if(StringUtils.isEmpty(sysWxUserInfo.getOpenid()) || StringUtils.isEmpty(sysWxUserInfo.getPhone())){
return AjaxResult.error("手机号为空");
}
// 查询微信用户
SysWxUserInfo userInfo = sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserInfo.getOpenid());
if(userInfo != null){
//更新数据
sysWxUserInfoService.updateSysWxUserInfo(sysWxUserInfo);
}else{
sysWxUserInfoService.insertSysWxUserInfo(sysWxUserInfo);
}
return AjaxResult.success();
}
/**
* 微信小程序获取客户打卡记录
* @param sysWxUserLog
* @return
*/
@GetMapping(value = "/getPunchLogs")
public AjaxResult getPunchLogs(SysWxUserLog sysWxUserLog) {
if(StringUtils.isEmpty(sysWxUserLog.getPhone()) && StringUtils.isEmpty(sysWxUserLog.getOpenid())){
return AjaxResult.error(5001, "缺少参数");
}
//查询是否下单
SysCustomer param = new SysCustomer();
param.setPhone(sysWxUserLog.getPhone());
int orderCount = sysOrderService.getOrderCountByCustomer(param);
if(orderCount > 0){
Map<String, Object> result = new HashMap<>();
//今日是否已打卡
boolean isPunch = false;
startPage();
List<WxLogInfo> list = sysWxUserLogService.getWxLogInfoList(sysWxUserLog);
if(list.size() > 0){
WxLogInfo lastLog = list.get(0);
if(lastLog.getDate() != null && ChronoUnit.DAYS.between(DateUtils.stringToLocalDate(lastLog.getDate(), "yyyy-MM-dd"), LocalDate.now()) == 0) {
isPunch = true;
}
}
Collections.reverse(list);
TableDataInfo tableDataInfo = getDataTable(list);
result.put("isPunch", isPunch);
result.put("tableDataInfo", tableDataInfo);
return AjaxResult.success(result);
}else{
return AjaxResult.error(5002, "未查询到相关订单信息");
}
}
/**
* 今日是否打卡
* @param openid
* @return
*/
@GetMapping(value = "/checkNowPunchLog/{openid}")
public AjaxResult checkNowPunchLog(@PathVariable String openid) {
int count = StringUtils.isEmpty(openid) ? 0 : sysWxUserLogService.checkWxLogInfoCount(openid);
return AjaxResult.success(count);
}
/**
* 微信小程序打卡
* @param sysWxUserLog
* @return
*/
@PostMapping(value = "/addPunchLog")
public AjaxResult addPunchLog(@RequestBody SysWxUserLog sysWxUserLog) {
// 查询微信用户
SysWxUserInfo userInfo = StringUtils.isEmpty(sysWxUserLog.getOpenid()) ? null : sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserLog.getOpenid());
if (userInfo == null || StringUtils.isEmpty(userInfo.getPhone())) {
return AjaxResult.error("不存在客户");
}
//查询今日是否已打卡
int count = sysWxUserLogService.checkWxLogInfoCount(sysWxUserLog.getOpenid());
if(count > 0){
return AjaxResult.error("今日已打卡,不可重复打卡");
}
sysWxUserLog.setLogTime(DateTimeUtil.getCurrentTimeDate());
return toAjax(sysWxUserLogService.insertSysWxUserLog(sysWxUserLog));
}
/**
* 处理返回值的ID加密
* @param list
* @return
*/
private void dealIdEnc(List<CustomerCaseResponse> list){
for (CustomerCaseResponse cus : list) {
cus.setId(AesUtils.encrypt(cus.getId()+"", null));
}
}
}

@ -3,6 +3,7 @@ package com.stdiet.custom.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.stdiet.common.annotation.Excel;
@ -14,10 +15,13 @@ import com.stdiet.common.core.domain.BaseEntity;
* @author wonder
* @date 2020-11-29
*/
@Data
public class SysWxUserLog extends BaseEntity
{
private static final long serialVersionUID = 1L;
private Long id;
/** 微信openid */
private String openid;
@ -68,183 +72,18 @@ public class SysWxUserLog extends BaseEntity
@JsonFormat(pattern = "yyyy-MM-dd")
private Date logTime;
/** 非持久字段,客户姓名 + 营养师姓名,使用 , 隔开用于接收sql查询返回字段 */
private String customerMessage;
/**
* 非持久化字段营养师
* 非持久化字段客户姓名
*/
@Excel(name = "姓名")
private String customer;
private String customerName;
//营养师ID
private Long nutritionistId;
/**
* 非持久化字段营养师
*/
@Excel(name = "营养师")
private String nutritionist;
public void setLogTime(Date logTime) {
this.logTime = logTime;
}
public Date getLogTime() {
return logTime;
}
public void setOpenid(String openid)
{
this.openid = openid;
}
public String getOpenid()
{
return openid;
}
public void setWeight(BigDecimal weight)
{
this.weight = weight;
}
public BigDecimal getWeight()
{
return weight;
}
public void setAppid(String appid)
{
this.appid = appid;
}
public String getAppid()
{
return appid;
}
public void setPhone(String phone)
{
this.phone = phone;
}
public String getPhone()
{
return phone;
}
public void setSleepTime(String sleepTime)
{
this.sleepTime = sleepTime;
}
public String getSleepTime()
{
return sleepTime;
}
public void setWakeupTime(String wakeupTime)
{
this.wakeupTime = wakeupTime;
}
public String getWakeupTime()
{
return wakeupTime;
}
public void setSport(String sport)
{
this.sport = sport;
}
public String getSport()
{
return sport;
}
public void setAvatarUrl(String avatarUrl)
{
this.avatarUrl = avatarUrl;
}
public String getAvatarUrl()
{
return avatarUrl;
}
public void setDiet(String diet)
{
this.diet = diet;
}
public String getDiet()
{
return diet;
}
public void setInsomnia(String insomnia)
{
this.insomnia = insomnia;
}
public String getInsomnia()
{
return insomnia;
}
public void setDefecation(String defecation)
{
this.defecation = defecation;
}
public String getDefecation()
{
return defecation;
}
public void setWater(Long water)
{
this.water = water;
}
public Long getWater()
{
return water;
}
public String getCustomerMessage() {
return customerMessage;
}
public void setCustomerMessage(String customerMessage) {
this.customerMessage = customerMessage;
}
public String getCustomer() {
return customer;
}
public void setCustomer(String customer) {
this.customer = customer;
}
public String getNutritionist() {
return nutritionist;
}
public void setNutritionist(String nutritionist) {
this.nutritionist = nutritionist;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("openid", getOpenid())
.append("weight", getWeight())
.append("appid", getAppid())
.append("phone", getPhone())
.append("sleepTime", getSleepTime())
.append("wakeupTime", getWakeupTime())
.append("sport", getSport())
.append("avatarUrl", getAvatarUrl())
.append("diet", getDiet())
.append("insomnia", getInsomnia())
.append("defecation", getDefecation())
.append("water", getWater())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.append("logTime", getLogTime())
.toString();
}
}

@ -5,6 +5,7 @@ import java.util.List;
import com.stdiet.custom.domain.SysCommision;
import com.stdiet.custom.domain.SysCommissionDayDetail;
import com.stdiet.custom.domain.SysCustomer;
import com.stdiet.custom.domain.SysOrder;
import com.stdiet.custom.dto.request.SysOrderCommision;
import org.apache.ibatis.annotations.Param;
@ -77,4 +78,11 @@ public interface SysOrderMapper
* @return
*/
List<SysOrder> selectSimpleOrderMessage(SysCommision sysCommision);
/**
* 查询客户订单数量
* @param sysCustomer
* @return
*/
int getOrderCountByCustomer(SysCustomer sysCustomer);
}

@ -41,7 +41,7 @@ public interface SysWxUserLogMapper
public int insertSysWxUserLog(SysWxUserLog sysWxUserLog);
/**
* 修改微信用户记录
* 修改微信用户打卡记录
*
* @param sysWxUserLog 微信用户记录
* @return 结果
@ -49,21 +49,33 @@ public interface SysWxUserLogMapper
public int updateSysWxUserLog(SysWxUserLog sysWxUserLog);
/**
* 删除微信用户记录
*
* @param openid 微信用户记录ID
* @return 结果
* 根据ID删除打卡记录
* @param id
* @return
*/
public int deleteSysWxUserLogById(String openid);
public int deleteSysWxUserLogById(Long id);
/**
* 批量删除微信用户记录
* 批量删除微信用户打卡记录
*
* @param openids 需要删除的数据ID
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deleteSysWxUserLogByIds(String[] openids);
public int deleteSysWxUserLogByIds(String[] ids);
public int checkWxLogInfoCount(String openid);
/**
* 根据openid和手机号查询打卡记录
* @return
*/
public List<WxLogInfo> getWxLogInfoList(SysWxUserLog sysWxUserLog);
/**
* 根据日期和openid查询打卡记录
* @param sysWxUserLog
* @return
*/
SysWxUserLog selectSysWxUserLogByDateAndOpenId(SysWxUserLog sysWxUserLog);
}

@ -3,6 +3,8 @@ package com.stdiet.custom.service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.stdiet.custom.domain.SysCustomer;
import com.stdiet.custom.domain.SysOrder;
/**
@ -75,4 +77,11 @@ public interface ISysOrderService
* @return
*/
int updateOrderServerEndDate(Long orderId, boolean updatePlan);
/**
* 查询客户订单数量
* @param sysCustomer
* @return
*/
int getOrderCountByCustomer(SysCustomer sysCustomer);
}

@ -17,10 +17,10 @@ public interface ISysWxUserLogService
/**
* 查询微信用户记录
*
* @param openid 微信用户记录ID
* @param id 微信用户记录ID
* @return 微信用户记录
*/
public SysWxUserLog selectSysWxUserLogById(String openid);
public SysWxUserLog selectSysWxUserLogById(String id);
/**
* 查询微信用户记录列表
@ -51,18 +51,32 @@ public interface ISysWxUserLogService
/**
* 批量删除微信用户记录
*
* @param openids 需要删除的微信用户记录ID
* @param ids 需要删除的微信用户记录ID
* @return 结果
*/
public int deleteSysWxUserLogByIds(String[] openids);
public int deleteSysWxUserLogByIds(String[] ids);
/**
* 删除微信用户记录信息
*
* @param openid 微信用户记录ID
* @param id 微信用户记录ID
* @return 结果
*/
public int deleteSysWxUserLogById(String openid);
public int deleteSysWxUserLogById(Long id);
public int checkWxLogInfoCount(String openid);
/**
* 根据openid和手机号查询打卡记录
* @return
*/
public List<WxLogInfo> getWxLogInfoList(SysWxUserLog sysWxUserLog);
/**
* 根据日期和openid查询打卡记录
* @param sysWxUserLog
* @return
*/
SysWxUserLog selectSysWxUserLogByDateAndOpenId(SysWxUserLog sysWxUserLog);
}

@ -4,6 +4,7 @@ import com.stdiet.common.annotation.Excel;
import com.stdiet.common.utils.DateUtils;
import com.stdiet.common.utils.SecurityUtils;
import com.stdiet.common.utils.StringUtils;
import com.stdiet.custom.domain.SysCustomer;
import com.stdiet.custom.domain.SysOrder;
import com.stdiet.custom.mapper.SysOrderMapper;
import com.stdiet.custom.service.ISysCommissionDayService;
@ -326,4 +327,13 @@ public class SysOrderServiceImpl implements ISysOrderService {
//删除食谱计划
sysRecipesPlanService.delRecipesPlanByOrderId(orderIds);
}
/**
* 查询客户订单数量
* @param sysCustomer
* @return
*/
public int getOrderCountByCustomer(SysCustomer sysCustomer){
return sysOrderMapper.getOrderCountByCustomer(sysCustomer);
}
}

@ -25,12 +25,12 @@ public class SysWxUserLogServiceImpl implements ISysWxUserLogService {
/**
* 查询微信用户记录
*
* @param openid 微信用户记录ID
* @param id 微信用户记录ID
* @return 微信用户记录
*/
@Override
public SysWxUserLog selectSysWxUserLogById(String openid) {
return sysWxUserLogMapper.selectSysWxUserLogById(openid);
public SysWxUserLog selectSysWxUserLogById(String id) {
return sysWxUserLogMapper.selectSysWxUserLogById(id);
}
/**
@ -76,23 +76,23 @@ public class SysWxUserLogServiceImpl implements ISysWxUserLogService {
/**
* 批量删除微信用户记录
*
* @param openids 需要删除的微信用户记录ID
* @param ids 需要删除的微信用户记录ID
* @return 结果
*/
@Override
public int deleteSysWxUserLogByIds(String[] openids) {
return sysWxUserLogMapper.deleteSysWxUserLogByIds(openids);
public int deleteSysWxUserLogByIds(String[] ids) {
return sysWxUserLogMapper.deleteSysWxUserLogByIds(ids);
}
/**
* 删除微信用户记录信息
*
* @param openid 微信用户记录ID
* @param id 微信用户记录ID
* @return 结果
*/
@Override
public int deleteSysWxUserLogById(String openid) {
return sysWxUserLogMapper.deleteSysWxUserLogById(openid);
public int deleteSysWxUserLogById(Long id) {
return sysWxUserLogMapper.deleteSysWxUserLogById(id);
}
@Override
@ -100,5 +100,22 @@ public class SysWxUserLogServiceImpl implements ISysWxUserLogService {
return sysWxUserLogMapper.checkWxLogInfoCount(openid);
}
/**
* 根据openid和手机号查询打卡记录
* @return
*/
@Override
public List<WxLogInfo> getWxLogInfoList(SysWxUserLog sysWxUserLog){
return sysWxUserLogMapper.getWxLogInfoList(sysWxUserLog);
}
/**
* 根据日期和openid查询打卡记录
* @param sysWxUserLog
* @return
*/
public SysWxUserLog selectSysWxUserLogByDateAndOpenId(SysWxUserLog sysWxUserLog){
return sysWxUserLogMapper.selectSysWxUserLogByDateAndOpenId(sysWxUserLog);
}
}

@ -35,15 +35,15 @@
<select id="selectSysCustomerList" parameterType="SysCustomer" resultMap="SysCustomerResult">
<include refid="selectSysCustomerVo"/>
where del_flag = 0
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%') or phone like concat('%', #{name}, '%')</if>
<if test="name != null and name != ''"> and (name like concat('%', #{name}, '%') or phone like concat('%', #{name}, '%'))</if>
<if test="mainDietitian != null and mainDietitian != ''"> and main_dietitian = #{mainDietitian}</if>
<if test="mainDietitian == 0"> and isnull(main_dietitian) or main_dietitian=0</if>
<if test="mainDietitian == 0"> and (isnull(main_dietitian) or main_dietitian=0)</if>
<if test="salesman != null and salesman != ''"> and salesman = #{salesman}</if>
<if test="salesman == 0"> and isnull(salesman) or salesman=0</if>
<if test="salesman == 0"> and (isnull(salesman) or salesman=0)</if>
<if test="afterDietitian != null and afterDietitian != ''"> and after_dietitian = #{afterDietitian}</if>
<if test="afterDietitian == 0"> and isnull(after_dietitian) or after_dietitian=0</if>
<if test="afterDietitian == 0"> and (isnull(after_dietitian) or after_dietitian=0)</if>
<if test="assistantDietitian != null and assistantDietitian != ''"> and assistant_dietitian = #{assistantDietitian}</if>
<if test="assistantDietitian == 0"> and isnull(assistant_dietitian) or assistant_dietitian=0</if>
<if test="assistantDietitian == 0"> and (isnull(assistant_dietitian) or assistant_dietitian=0)</if>
<if test="fansChannel != null "> and fans_channel = #{fansChannel}</if>
order by create_time desc
</select>

@ -408,4 +408,16 @@
order by o.order_time desc
</select>
<!-- 根据客户信息查询客户的订单列表数量 -->
<select id="getOrderCountByCustomer" parameterType="SysCustomer" resultType="int">
SELECT count(so.order_id) FROM sys_order so LEFT JOIN sys_customer sc ON sc.id = so.cus_id AND sc.del_flag = 0
WHERE so.del_flag = 0
<if test="phone != null and phone != ''">
and sc.phone = #{phone}
</if>
<if test="id != null">
and sc.id = #{id}
</if>
</select>
</mapper>

@ -5,6 +5,7 @@
<mapper namespace="com.stdiet.custom.mapper.SysWxUserLogMapper">
<resultMap type="SysWxUserLog" id="SysWxUserLogResult">
<result property="id" column="id" />
<result property="openid" column="openid"/>
<result property="weight" column="weight"/>
<result property="appid" column="appid"/>
@ -25,7 +26,9 @@
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
<!-- 非持久字段 -->
<result property="customerMessage" column="customer_message"></result>
<result property="customerName" column="customer_name"></result>
<!-- 营养师 -->
<result property="nutritionist" column="nutritionist"></result>
</resultMap>
<resultMap type="com.stdiet.custom.page.WxLogInfo" id="WxLogInfo">
@ -41,28 +44,30 @@
</resultMap>
<sql id="selectSysWxUserLogVo">
select openid, weight, appid, phone, log_time, sleep_time, wakeup_time, sport, avatar_url, diet, insomnia, defecation, water, create_by, create_time, update_by, update_time, remark from sys_wx_user_log
</sql>
<sql id="selectBaseField">
swul.openid, swul.weight, swul.appid, swul.phone, swul.log_time, swul.sleep_time, swul.wakeup_time, swul.sport, swul.avatar_url, swul.diet, swul.insomnia,
swul.defecation, swul.water, swul.create_by, swul.create_time, swul.update_by, swul.update_time, swul.remark
select id,openid, weight, appid, phone, log_time, sleep_time, wakeup_time, sport, avatar_url, diet, insomnia, defecation, water, create_by, create_time, update_by, update_time, remark from sys_wx_user_log
</sql>
<select id="checkWxLogInfoCount" parameterType="String" resultType="Integer">
select count(*) from sys_wx_user_log where to_days(log_time) = to_days(now()) and openid = #{openid}
</select>
<!-- 后台查询 -->
<select id="selectSysWxUserLogList" parameterType="SysWxUserLog" resultMap="SysWxUserLogResult">
select <include refid="selectBaseField"></include>,
(select CONCAT(IFNULL(so.customer,''),',',IFNULL(su.nick_name,'')) from (select * from sys_order s where s.phone = swul.phone order by order_id desc limit 1) as so
left join sys_user su on su.user_id = so.nutritionist_id and su.del_flag = 0) as customer_message
from sys_wx_user_log swul
<where>
<if test="openid != null and openid != ''">and swul.openid = #{openid}</if>
<if test="phone != null and phone != ''">or swul.phone = #{phone}</if>
</where>
order by create_time desc
SELECT wxlog.id,wxinfo.appid,wxinfo.openid,wxinfo.avatar_url,wxinfo.phone,wxlog.weight,wxlog.log_time,wxlog.sleep_time, wxlog.wakeup_time,wxlog.defecation, wxlog.water, wxlog.insomnia,wxlog.sport,wxlog.diet,wxlog.remark,
sc.name as customer_name, su.nick_name as nutritionist
FROM sys_wx_user_log wxlog
left join sys_wx_user_info wxinfo on wxinfo.openid = wxlog.openid
left join sys_customer sc on sc.phone = wxinfo.phone and sc.del_flag = 0
left join sys_user su on su.user_id = sc.main_dietitian and su.del_flag = '0'
where wxinfo.phone is not null
<if test="phone != null and phone != ''">and (sc.name like concat('%',#{phone},'%') or wxinfo.phone like concat('%',#{phone},'%') )</if>
<if test="appid != null">
and wxinfo.appid = #{appid}
</if>
<if test="nutritionistId != null">
and su.user_id = #{nutritionistId}
</if>
order by wxlog.create_time desc
</select>
<select id="selectWxLogInfoList" parameterType="SysWxUserLog" resultMap="WxLogInfo">
@ -83,7 +88,7 @@
<select id="selectSysWxUserLogById" parameterType="String" resultMap="SysWxUserLogResult">
<include refid="selectSysWxUserLogVo"/>
where openid = #{openid}
where id = #{id}
</select>
<insert id="insertSysWxUserLog" parameterType="SysWxUserLog">
@ -133,6 +138,7 @@
<update id="updateSysWxUserLog" parameterType="SysWxUserLog">
update sys_wx_user_log
<trim prefix="SET" suffixOverrides=",">
<if test="openid != null">openid = #{openid},</if>
<if test="weight != null">weight = #{weight},</if>
<if test="appid != null">appid = #{appid},</if>
<if test="phone != null">phone = #{phone},</if>
@ -151,18 +157,30 @@
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where openid = #{openid}
where id = #{id}
</update>
<delete id="deleteSysWxUserLogById" parameterType="String">
delete from sys_wx_user_log where openid = #{openid}
<delete id="deleteSysWxUserLogById" parameterType="Long">
delete from sys_wx_user_log where id = #{id}
</delete>
<delete id="deleteSysWxUserLogByIds" parameterType="String">
delete from sys_wx_user_log where openid in
<foreach item="openid" collection="array" open="(" separator="," close=")">
#{openid}
delete from sys_wx_user_log where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<!-- 根据openid或手机号查询对应打卡记录 -->
<select id="getWxLogInfoList" parameterType="SysWxUserLog" resultMap="WxLogInfo">
SELECT wxlog.weight,wxlog.log_time,wxlog.sleep_time, wxlog.wakeup_time,wxlog.defecation, wxlog.water, wxlog.insomnia,wxlog.sport,wxlog.diet
FROM sys_wx_user_log wxlog left join sys_wx_user_info wxinfo on wxinfo.openid = wxlog.openid
where wxinfo.openid = #{openid} or wxinfo.phone = #{phone}
order by wxlog.log_time desc
</select>
<select id="selectSysWxUserLogByDateAndOpenId" parameterType="SysWxUserLog" resultMap="SysWxUserLogResult">
select id from sys_wx_user_log where to_days(log_time) = to_days(#{logTime}) and openid = #{openid} limit 1
</select>
</mapper>

@ -11,10 +11,10 @@
/>
</el-select>
</el-form-item>
<el-form-item label="手机号" prop="phone">
<el-form-item label="客户信息" prop="phone">
<el-input
v-model="queryParams.phone"
placeholder="请输入电话"
placeholder="请输入姓名或手机号"
clearable
size="small"
@keyup.enter.native="handleQuery"
@ -27,7 +27,7 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<!--<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
@ -36,7 +36,7 @@
v-hasPermi="['custom:wxUserLog:add']"
>新增
</el-button>
</el-col>
</el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
@ -86,21 +86,21 @@
</template>
</el-table-column>
<el-table-column label="微信应用" align="center" prop="appid" width="120" :formatter="appidFormat"/>
<el-table-column label="姓名" align="center" prop="customer"/>
<el-table-column label="姓名" align="center" prop="customerName"/>
<el-table-column label="手机号" align="center" prop="phone" width="180"/>
<el-table-column label="营养师" align="center" prop="nutritionist"/>
<el-table-column label="打卡日期" align="center" prop="logTime" width="180">
<el-table-column label="打卡日期" align="center" prop="logTime" width="120">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.logTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="睡觉时间" align="center" prop="sleepTime" width="180">
<el-table-column label="睡觉时间" align="center" prop="sleepTime" width="120">
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.sleepTime, '{y}-{m}-{d}') }}</span>-->
<!-- </template>-->
</el-table-column>
<el-table-column label="起床时间" align="center" prop="wakeupTime" width="180">
<el-table-column label="起床时间" align="center" prop="wakeupTime" width="120">
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.wakeupTime, '{y}-{m}-{d}') }}</span>-->
<!-- </template>-->
@ -114,7 +114,6 @@
<span>{{`${scope.row.water} ml`}}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -154,11 +153,7 @@
<el-input v-model="form.weight" placeholder="请输入体重"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="电话" prop="phone">
<el-input v-model="form.phone" placeholder="请输入电话"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="打卡日期" prop="logTime">
<el-date-picker clearable size="small" style="width: 200px"
@ -249,18 +244,7 @@
<el-input v-model="form.water" placeholder="请输入饮水量"/>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="微信应用" prop="appid">
<el-select v-model="form.appid" placeholder="请选择微信appid">
<el-option
v-for="dict in appidOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
@ -441,8 +425,8 @@
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const openid = row.openid || this.ids
getWxUserLog(openid).then(response => {
const id = row.id || this.ids
getWxUserLog(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改微信用户记录";
@ -475,13 +459,13 @@
},
/** 删除按钮操作 */
handleDelete(row) {
const openids = row.openid || this.ids;
this.$confirm('是否确认删除微信用户记录编号为"' + openids + '"的数据项?', "警告", {
const ids = row.id || this.ids;
this.$confirm('是否确认删除微信用户记录编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delWxUserLog(openids);
return delWxUserLog(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");