134 lines
5.4 KiB
C#
134 lines
5.4 KiB
C#
using CRM.Core.BLL.Util;
|
|
using CRM.Core.BLL.Wx;
|
|
using CRM.Core.Model.Entity;
|
|
using CRM.Core.Model.EntityUserCenter;
|
|
using MySql.Data.MySqlClient;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CRM.Core.BLL.Application.QsurveyOrder
|
|
{
|
|
public class QsurveyOrderServices
|
|
{
|
|
private readonly CACHE_BL _cache;
|
|
public QsurveyOrderServices() {
|
|
_cache = new CACHE_BL();
|
|
}
|
|
|
|
public QsurveyOrderResultDto GetList(QsurveyOrderQueryDto query)
|
|
{
|
|
var qsurveyids = _cache.GetValue_Parameter("qsurveyids");
|
|
if (string.IsNullOrEmpty(qsurveyids))
|
|
qsurveyids = "82";
|
|
|
|
// 声明参数列表
|
|
var parameters = new List<MySqlParameter>();
|
|
|
|
// 基础查询SQL
|
|
// 基础查询SQL
|
|
var baseQuery = $@"
|
|
SELECT a.*, c.umid, c.username, c.nickname, c.headimgurl
|
|
FROM (
|
|
SELECT
|
|
a.qsurveyid,
|
|
a.appid,
|
|
a.appuserid,
|
|
MIN(a.cTime) AS cTime
|
|
FROM `dncmsbase`.`qsurveyorder` a
|
|
WHERE a.`qsurveyid` IN ({qsurveyids})
|
|
{(query.starttime.HasValue ? "AND a.cTime >= @StartTime" : "")}
|
|
{(query.endtime.HasValue ? "AND a.cTime <= @EndTime" : "")}
|
|
GROUP BY a.qsurveyid, a.appid, a.appuserid
|
|
) a
|
|
LEFT JOIN `dncmsbase`.`user` AS b
|
|
ON a.appid = b.appid AND a.appuserid = b.appuserid
|
|
LEFT JOIN `dncmsbase`.`user_customer` AS c
|
|
ON b.customerid = c.customerid
|
|
{(string.IsNullOrEmpty(query.umid) ? "" : "WHERE c.umid = @Umid")}
|
|
{(string.IsNullOrEmpty(query.username)
|
|
? ""
|
|
: (string.IsNullOrEmpty(query.umid) ? "WHERE " : "AND ") + "c.username LIKE @Username")}
|
|
LIMIT @PageOffset, @PageSize";
|
|
|
|
// 总记录数SQL
|
|
var countQuery = $@"
|
|
SELECT COUNT(1)
|
|
FROM (
|
|
SELECT
|
|
a.qsurveyid,
|
|
a.appid,
|
|
a.appuserid,
|
|
MIN(a.cTime) AS cTime
|
|
FROM `dncmsbase`.`qsurveyorder` a
|
|
WHERE a.`qsurveyid` IN ({qsurveyids})
|
|
{(query.starttime.HasValue ? "AND a.cTime >= @StartTime" : "")}
|
|
{(query.endtime.HasValue ? "AND a.cTime <= @EndTime" : "")}
|
|
GROUP BY a.qsurveyid, a.appid, a.appuserid
|
|
) a
|
|
{(string.IsNullOrEmpty(query.umid) && string.IsNullOrEmpty(query.username)
|
|
? ""
|
|
: $@"
|
|
LEFT JOIN `dncmsbase`.`user` AS b
|
|
ON a.appid = b.appid AND a.appuserid = b.appuserid
|
|
LEFT JOIN `dncmsbase`.`user_customer` AS c
|
|
ON b.customerid = c.customerid
|
|
{(string.IsNullOrEmpty(query.umid) ? "" : "WHERE c.umid = @Umid")}
|
|
{(string.IsNullOrEmpty(query.username)
|
|
? ""
|
|
: (string.IsNullOrEmpty(query.umid) ? "WHERE " : "AND ") + "c.username LIKE @Username")}")}";
|
|
|
|
// 参数添加保持不变
|
|
if (query.starttime.HasValue)
|
|
parameters.Add(new MySqlParameter("@StartTime", query.starttime.Value));
|
|
if (query.endtime.HasValue)
|
|
parameters.Add(new MySqlParameter("@EndTime", query.endtime.Value));
|
|
if (!string.IsNullOrEmpty(query.umid))
|
|
parameters.Add(new MySqlParameter("@Umid", query.umid));
|
|
if (!string.IsNullOrEmpty(query.username))
|
|
parameters.Add(new MySqlParameter("@Username", $"%{query.username}%"));
|
|
parameters.Add(new MySqlParameter("@PageOffset", (query.PageIndex - 1) * query.PageSize));
|
|
parameters.Add(new MySqlParameter("@PageSize", query.PageSize));
|
|
|
|
using (var context = new UserCenterContext())
|
|
{
|
|
var result = new QsurveyOrderResultDto
|
|
{
|
|
Items = context.Database.SqlQuery<QsurveyOrderViewDto>(baseQuery, parameters.ToArray()).ToList(),
|
|
TotalCount = context.Database.SqlQuery<int>(countQuery, parameters.ToArray()).FirstOrDefault()
|
|
};
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
|
|
public class QsurveyOrderQueryDto
|
|
{
|
|
public string umid { get; set; }
|
|
public string username { get; set; }
|
|
public DateTime? starttime { get; set; }
|
|
public DateTime? endtime { get; set; }
|
|
public int PageIndex { get; set; } = 1;
|
|
public int PageSize { get; set; } = 20;
|
|
}
|
|
|
|
public class QsurveyOrderViewDto
|
|
{
|
|
public int QsurveyId { get; set; }
|
|
public string AppId { get; set; }
|
|
public string AppUserId { get; set; }
|
|
public string Umid { get; set; }
|
|
public string Username { get; set; }
|
|
public string Nickname { get; set; }
|
|
public string Headimgurl { get; set; }
|
|
public DateTime cTime { get; set; }
|
|
}
|
|
|
|
public class QsurveyOrderResultDto
|
|
{
|
|
public List<QsurveyOrderViewDto> Items { get; set; }
|
|
public int TotalCount { get; set; }
|
|
}
|
|
} |