Commit 4918f6fb by 陈浩建

一人一码订单调整(部分)

parent a81ae18b
...@@ -129,8 +129,8 @@ spring: ...@@ -129,8 +129,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
...@@ -129,8 +129,8 @@ spring: ...@@ -129,8 +129,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
package com.winsun.bean;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
/**
*
*
* 注意所有序号从1开始.
*
* @param <T> Page中记录的类型.
*
* @author
*/
public class Page<T> {
//-- 公共变量 --//
public static final String ASC = "asc";
public static final String DESC = "desc";
public static final int NON_PAGE = 0;
//-- 分页参数 --//
protected int pageNo = 1;
protected int pageSize = -1;
protected String orderBy = null;
protected String order = null;
protected boolean autoCount = true;
//-- 返回结果 --//
protected List<T> result = Lists.newArrayList();
protected long totalCount = -1;
//-- 构造函数 --//
public Page() {
this.pageSize = 10;
}
public Page(int pageSize) {
this.pageSize = pageSize;
}
//-- 分页参数访问函数 --//
/**
* 获得当前页的页号,序号从1开始,默认为1.
*/
public int getPageNo() {
return pageNo;
}
/**
* 设置当前页的页号,序号从1开始,低于1时自动调整为1.
*/
public void setPageNo(final int pageNo) {
this.pageNo = pageNo;
if (pageNo < 1) {
this.pageNo = 1;
}
}
/**
* 返回Page对象自身的setPageNo函数,可用于连续设置。
*/
public Page<T> pageNo(final int thePageNo) {
setPageNo(thePageNo);
return this;
}
/**
* 获得每页的记录数量, 默认为-1.
*/
public int getPageSize() {
return pageSize;
}
/**
* 设置每页的记录数量.
*/
public void setPageSize(final int pageSize) {
this.pageSize = pageSize;
}
/**
* 返回Page对象自身的setPageSize函数,可用于连续设置。
*/
public Page<T> pageSize(final int thePageSize) {
setPageSize(thePageSize);
return this;
}
/**
* 根据pageNo和pageSize计算当前页第一条记录在总结果集中的位置,序号从1开始.
*/
public int getFirst() {
return ((pageNo - 1) * pageSize) + 1;
}
/**
* 获得排序字段,无默认值. 多个排序字段时用','分隔.
*/
public String getOrderBy() {
return orderBy;
}
/**
* 设置排序字段,多个排序字段时用','分隔.
*/
public void setOrderBy(final String orderBy) {
this.orderBy = orderBy;
}
/**
* 返回Page对象自身的setOrderBy函数,可用于连续设置。
*/
public Page<T> orderBy(final String theOrderBy) {
setOrderBy(theOrderBy);
return this;
}
/**
* 获得排序方向, 无默认值.
*/
public String getOrder() {
return order;
}
/**
* 设置排序方式向.
*
* @param order 可选值为desc或asc,多个排序字段时用','分隔.
*/
public void setOrder(final String order) {
String lowcaseOrder = StringUtils.lowerCase(order);
//检查order字符串的合法值
String[] orders = StringUtils.split(lowcaseOrder, ',');
for (String orderStr : orders) {
if (!StringUtils.equals(DESC, orderStr) && !StringUtils.equals(ASC, orderStr)) {
throw new IllegalArgumentException("排序方向" + orderStr + "不是合法值");
}
}
this.order = lowcaseOrder;
}
/**
* 返回Page对象自身的setOrder函数,可用于连续设置。
*/
public Page<T> order(final String theOrder) {
setOrder(theOrder);
return this;
}
/**
* 是否已设置排序字段,无默认值.
*/
public boolean isOrderBySetted() {
return (StringUtils.isNotBlank(orderBy) && StringUtils.isNotBlank(order));
}
/**
* 获得查询对象时是否先自动执行count查询获取总记录数, 默认为false.
*/
public boolean isAutoCount() {
return autoCount;
}
/**
* 设置查询对象时是否自动先执行count查询获取总记录数.
*/
public void setAutoCount(final boolean autoCount) {
this.autoCount = autoCount;
}
/**
* 返回Page对象自身的setAutoCount函数,可用于连续设置。
*/
public Page<T> autoCount(final boolean theAutoCount) {
setAutoCount(theAutoCount);
return this;
}
//-- 访问查询结果函数 --//
/**
* 获得页内的记录列表.
*/
public List<T> getResult() {
return result;
}
/**
* 设置页内的记录列表.
*/
public void setResult(final List<T> result) {
this.result = result;
}
/**
* 获得总记录数, 默认值为-1.
*/
public long getTotalCount() {
return totalCount;
}
/**
* 设置总记录数.
*/
public void setTotalCount(final long totalCount) {
this.totalCount = totalCount;
}
/**
* 根据pageSize与totalCount计算总页数, 默认值为-1.
*/
public long getTotalPages() {
if (totalCount < 0) {
return -1;
}
long count = totalCount / pageSize;
if (totalCount % pageSize > 0) {
count++;
}
return count;
}
/**
* 是否还有下一页.
*/
public boolean isHasNext() {
return (pageNo + 1 <= getTotalPages());
}
/**
* 取得下页的页号, 序号从1开始.
* 当前页为尾页时仍返回尾页序号.
*/
public int getNextPage() {
if (isHasNext()) {
return pageNo + 1;
} else {
return pageNo;
}
}
/**
* 是否还有上一页.
*/
public boolean isHasPre() {
return (pageNo - 1 >= 1);
}
/**
* 取得上页的页号, 序号从1开始.
* 当前页为首页时返回首页序号.
*/
public int getPrePage() {
if (isHasPre()) {
return pageNo - 1;
} else {
return pageNo;
}
}
}
package com.winsun.mapper;
import com.winsun.bean.Page;
import com.winsun.utils.Is;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.lob.DefaultLobHandler;
import org.springframework.jdbc.support.lob.LobHandler;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
* springjdbc baseDao
* @author lisilin
* @since 0.1
*/
public abstract class Basemapper<T> {
@Autowired
protected JdbcTemplate jdbcTemplate;
public LobHandler lobHandler = new DefaultLobHandler();
/**
* 适用于更新数据库,insert,update, delete
*
* @param namedSql:命名参数的SQL语句,而且参数的命名必须和JavaBean中的属性名对应
* @param javaBean
* @return
*/
/**
* 带参数更新
* @param sql
* @param paramValue
* @return
*/
protected int update(String sql, Object... paramValue) {
return jdbcTemplate.update(sql, paramValue);
}
/**
* 批量带参数更新(针对更新SQL一致,参数不一致)
* @param sql
* @param paramValue
* @return
*/
protected int[] batchUpdate(String sql, List<Object[]> paramValue) {
return jdbcTemplate.batchUpdate(sql, paramValue);
}
/**
* 批量sql更新(针对更新SQL不一致)
* @param sql
* @return
*/
protected int[] batchUpdate(String[] sql) {
return jdbcTemplate.batchUpdate(sql);
}
@SuppressWarnings("unchecked")
protected Page<?> findDwon (@SuppressWarnings("rawtypes") Page page, String sql, Object[] pars,RowMapper<T> rowMapper) throws Exception{
String pageQueryString = getMysqlPageSQL(sql);
String countSql = this.getCountQuerySQL(sql);
if(null==rowMapper){
List<Map<String,Object>> list = jdbcTemplate.queryForList(pageQueryString, pars);
page.setResult(list);
}else{
List<T> list = jdbcTemplate.query(pageQueryString, pars, rowMapper);
page.setResult(list);
}
int count = jdbcTemplate.queryForObject(countSql, pars, Integer.class);
if (count > 0) {
page.setTotalCount(count);
} else {
page.setTotalCount(0);
}
return page;
}
/**
* 构造Mysql数据分页SQL
* @param queryString
* @param startIndex
* @param pageSize
* @return
*/
protected String getMysqlPageSQL(String queryString, Integer startIndex, Integer pageSize) {
if (StringUtils.isEmpty(queryString))
{
return null;
}
startIndex = (startIndex - 1) * pageSize;
int endIndex = pageSize;
String endSql = queryString;
if(endIndex>0){
endSql += " limit " + startIndex +"," + endIndex;
}
return endSql;
}
protected String getMysqlPageSQL(String queryString) {
if (StringUtils.isEmpty(queryString))
{
return null;
}
return queryString;
}
/**
* 构造 Oracle数据分页SQL
* @param queryString
* @param startIndex
* @param pageSize
* @return
*/
protected String getOraclePageSQL(String queryString, Integer startIndex, Integer pageSize)
{
if (StringUtils.isEmpty(queryString))
{
return null;
}
// String itemSource =
queryString.toLowerCase();
startIndex = (startIndex - 1) * pageSize;
int endIndex = startIndex + pageSize + 1;
String endSql = "select * from (select rOraclePageSQL.*,ROWNUM as currentRow from (" +
queryString + ") rOraclePageSQL where rownum <=" + endIndex + ") where currentRow>" + startIndex;
return endSql;
}
/**
* 构造统计SQL
* @param queryString
* @return
*/
protected String getCountQuerySQL(String queryString) {
String sql = "";
if (StringUtils.isNotEmpty(queryString))
{
sql = "select count(*) from (" + queryString + ") xCount";
}
return sql;
}
/**
* 带条件查询,组装并返回sql
* @param map
* @return
* @throws Exception
*/
public Map<String,Object> select(String table,Map<String,Object> map)throws Exception{
StringBuffer sf = new StringBuffer();
List<Object> pars = new ArrayList<Object>();
sf.append("select * from "+table+" where 1=1");
if(null!=map){
/*Set<String> set = map.keySet();
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String key = (String)iter.next();
if(Is.isNoEmpty(map.get(key))){
sf.append(" and "+key+" like ? ");
pars.add("%"+map.get(key)+"%");
}
}*/
for (Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
if(Is.isNoEmpty(entry.getValue())){
sf.append(" and "+key+" like ? ");
pars.add("%"+entry.getValue()+"%");
}
}
/* for (Entry<String, Object> entry : map.entrySet()) {
if(!entry.getKey().equals("id")){
sf.append(entry.getKey()+"=?,");
pars.add(entry.getValue());
}
}*/
}
map.put("sql", sf.toString());
map.put("pars", pars);
return map;
}
/**
* 带条件查询
* @param map
* @return
* @throws Exception
*/
public List<Map<String,Object>> selectList(String table,Map<String,Object> map)throws Exception{
StringBuffer sf = new StringBuffer();
List<Object> pars = new ArrayList<Object>();
sf.append("select * from "+table+" where 1=1");
if(null!=map){
/* Set<String> set = map.keySet();
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String key = (String)iter.next();
if(Is.isNoEmpty(map.get(key))){
sf.append(" and "+key+" like ? ");
pars.add("%"+map.get(key)+"%");
}
}*/
for (Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
if(Is.isNoEmpty(entry.getValue())){
sf.append(" and "+key+" like ? ");
pars.add("%"+entry.getValue()+"%");
}
}
}
return jdbcTemplate.queryForList(sf.toString(), pars.toArray());
}
/**
* 带条件查询
* @param map
* @return
* @throws Exception
*/
public List<Map<String,Object>> selectListForEquest(String table,Map<String,Object> map)throws Exception{
StringBuffer sf = new StringBuffer();
List<Object> pars = new ArrayList<Object>();
sf.append("select * from "+table+" where 1=1");
if(null!=map){
/*Set<String> set = map.keySet();
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String key = (String)iter.next();
if(Is.isNoEmpty(map.get(key))){
sf.append(" and "+key+" = ? ");
pars.add(map.get(key));
}
}*/
for (Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
if(Is.isNoEmpty(entry.getValue())){
sf.append(" and "+key+" = ? ");
pars.add(entry.getValue());
}
}
}
return jdbcTemplate.queryForList(sf.toString(), pars.toArray());
}
/**
* 带参数插入
* @param map
* @throws Exception
*/
public void insert(String table,Map<String,Object> map)throws Exception{
StringBuffer sf = new StringBuffer();
map.remove("color");//去除多余的参数
map.remove("phoneLogo");
map.remove("rom");
map.remove("price");
map.remove("packageName");
String sql=" values(";
List<Object> pars = new ArrayList<Object>();
sf.append("insert into "+table+"(");
if(null!=map){
/*Set<String> set = map.keySet();
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String key = (String)iter.next();
sf.append(key+",");
sql+="?,";
pars.add(map.get(key)==null?"":map.get(key));
}*/
for (Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
sf.append(key+",");
sql+="?,";
pars.add(entry.getValue()==null?"":entry.getValue());
}
sql=sql.substring(0, sql.length()-1)+")";
sql=sf.substring(0,sf.length()-1).toString()+")"+sql;
}
jdbcTemplate.update(sql, pars.toArray());
}
/**
* 带参数插入
* @param table
* @param list
* @param pars
* @throws Exception
*/
public void insert(String table,List<Object> list,List<Object[]> pars)throws Exception{
StringBuffer sf = new StringBuffer();
String sql=" values(";
sf.append("insert into "+table+"(");
if(null!=list){
for(int i=0;i<list.size();i++){
sf.append(list.get(i)+",");
sql+="?,";
}
sql=sql.substring(0, sql.length()-1)+")";
sql=sf.substring(0,sf.length()-1).toString()+")"+sql;
}
jdbcTemplate.batchUpdate(sql, pars);
}
/**
* 修改
* @param map
* @throws Exception
*/
public int update(String table,Map<String,Object> map)throws Exception{
StringBuffer sf = new StringBuffer();
String sql="";
List<Object> pars = new ArrayList<Object>();
sf.append("update "+table+" set ");
if(null!=map){
/* Set<String> set = map.keySet();
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String key = (String)iter.next();
if(!key.equals("id")){
sf.append(key+"=?,");
pars.add(map.get(key));
}
}*/
for (Entry<String, Object> entry : map.entrySet()) {
if(!entry.getKey().equals("id")){
sf.append(entry.getKey()+"=?,");
pars.add(entry.getValue());
}
}
pars.add(map.get("id"));
sql = sf.substring(0, sf.length()-1)+" where id=?";
}
return jdbcTemplate.update(sql, pars.toArray());
}
public int updateOrderView(String table,Map<String,Object> map)throws Exception{
StringBuffer sf = new StringBuffer();
String sql="";
List<Object> pars = new ArrayList<Object>();
sf.append("update "+table+" set ");
if(null!=map){
for (Entry<String, Object> entry : map.entrySet()) {
if(!entry.getKey().equals("order_id")){
sf.append(entry.getKey()+"=?,");
pars.add(entry.getValue());
}
}
pars.add(map.get("order_id"));
sql = sf.substring(0, sf.length()-1)+" where order_id=?";
}
return jdbcTemplate.update(sql, pars.toArray());
}
/**
* 修改
* @throws Exception
*/
public void updateBatch(String sql,List<Object[]> pars)throws Exception{
jdbcTemplate.batchUpdate(sql, pars);
}
/**
* 带参数修改,自带where条件
* @param table
* @param map
* @param id
* @throws Exception
*/
public void update(String table,Map<String,Object> map,String id)throws Exception{
StringBuffer sf = new StringBuffer();
String sql="";
List<Object> pars = new ArrayList<Object>();
sf.append("update "+table+" set ");
if(null!=map){
/*Set<String> set = map.keySet();
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String key = (String)iter.next();
if(!key.equals(id)){
sf.append(key+"=?,");
pars.add(map.get(key));
}
}*/
for (Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
if(!key.equals("id")){
sf.append(key+"=?,");
pars.add(entry.getValue());
}
}
pars.add(map.get(id));
sql = sf.substring(0, sf.length()-1)+" where "+id+"=?";
}
jdbcTemplate.update(sql, pars.toArray());
}
public int updatebyId(String table,Map<String,Object> map,String id)throws Exception{
StringBuffer sf = new StringBuffer();
String sql="";
List<Object> pars = new ArrayList<Object>();
sf.append("update "+table+" set ");
if(null!=map){
for (Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();
sf.append(key+"=");
sf.append("'");
sf.append(value);
sf.append("'");
sf.append(",");
}
pars.add(id);
sql = sf.substring(0, sf.length()-1)+" where id='"+id+"'";
}
return jdbcTemplate.update(sql);
}
public void delete(String table,String id)throws Exception{
String sql = "delete from "+table+" where id=?";
if(StringUtils.isNotBlank(id)){
jdbcTemplate.update(sql, id);
}
}
public void delete(String table,Map<String,Object> map)throws Exception{
StringBuffer sf = new StringBuffer();
List<Object> pars = new ArrayList<Object>();
sf.append("delete from "+table+" where 1=1 ");
if(null!=map){
/*Set<String> set = map.keySet();
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String key = (String)iter.next();
if(Is.isNoEmpty(map.get(key))){
sf.append(" and "+key+" = ? ");
pars.add(map.get(key));
}
}*/
for (Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
if(Is.isNoEmpty(entry.getValue())){
sf.append(" and "+key+" = ? ");
pars.add(entry.getValue());
}
}
}
jdbcTemplate.update(sf.toString(), pars.toArray());
}
public void createField(String table,List<Map<String,Object>> fieldName){
String sql = "SELECT COLUMN_NAME FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = '"+table+"' ";
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
StringBuffer sb = new StringBuffer();
sb.append("alter table "+table);
int i=0;
for(i=0;i<fieldName.size();i++){
boolean falg = true;
for(int j=0;j<list.size();j++){
if(fieldName.get(i).get("fieldEngName").equals(list.get(j).get("COLUMN_NAME"))) falg = false;
}
if(falg){
sb.append(" add "+fieldName.get(i).get("fieldEngName")+" VARCHAR(100) DEFAULT NULL COMMENT '"+fieldName.get(i).get("fieldName")+"'");
if(i<fieldName.size()-1){
sb.append(",");
}
}
}
jdbcTemplate.update(sb.toString());
}
}
\ No newline at end of file
...@@ -16,6 +16,7 @@ import com.winsun.bean.OrderView; ...@@ -16,6 +16,7 @@ import com.winsun.bean.OrderView;
@Component @Component
public interface OrderMapper extends BaseMapper<Order> { public interface OrderMapper extends BaseMapper<Order> {
@Insert("insert into `hhr_order_history` values(#{id},#{status},#{date},#{operator}) ") @Insert("insert into `hhr_order_history` values(#{id},#{status},#{date},#{operator}) ")
Integer inserOrderHis(@Param("id") String id, @Param("status") String status, @Param("date") Date date, @Param("operator") String operator); Integer inserOrderHis(@Param("id") String id, @Param("status") String status, @Param("date") Date date, @Param("operator") String operator);
...@@ -59,6 +60,22 @@ public interface OrderMapper extends BaseMapper<Order> { ...@@ -59,6 +60,22 @@ public interface OrderMapper extends BaseMapper<Order> {
@Select("select xb_order_id xbOrderId from `hhr_order` where order_number = #{orderNumber}") @Select("select xb_order_id xbOrderId from `hhr_order` where order_number = #{orderNumber}")
String selectxbOrderIdByOrderNumber(String orderNumber); String selectxbOrderIdByOrderNumber(String orderNumber);
@Select("select * from `hhr_order` where order_number = #{orderNumber}")
List<Map<String, Object>> selectOrderIdByOrderNumber(String orderNumber);
@Select(" SELECT id,order_status,hehuoren_id,package_id,customer_name,business_number, " +
" contact_number,site,address,id_card,parent_name,business_iccid,kapin,id_cardz,id_cardf,id_cardzs,studen_card, " +
" create_time FROM hhr_order where id= #{id} ")
Map<String, Object> selectOrderById(String id);
@Select("SELECT u.*,s.service_qrcode,s.kdsl,s.net_type,s.is_xb,s.jilt_kd,s.jilt_kdy,s.net_phone " +
"FROM hhr_user u LEFT JOIN hhr_user_school us ON u.id=us.user_id " +
"LEFT JOIN hhr_school s ON us.school_id=s.id WHERE u.id= #{hehuoren_id} ")
Map<String, Object> findPartnerById(String hehuoren_id);
@Select("SELECT * FROM hhr_ysm_user WHERE id = #{id}")
Map<String, Object> findYsmById(int id);
@Select("select ysm from `hhr_user` where id = #{id}") @Select("select ysm from `hhr_user` where id = #{id}")
String selectYsmById(String id); String selectYsmById(String id);
} }
package com.winsun.utils;
import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;
/**
* 判断非空工具类
*
* @author hjh
*
* @version v1.4 2016-12-19
* @since 2016-2-12
*/
public class Is {
/**
* 私有化构造对象,不能创建对象
*/
private Is() {
super();
throw new UnsupportedOperationException("cannot be instantiated");
}
/**
* 判断是否大于0
*
* @param num
* 整形
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(byte num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(byte[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (byte i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 整形
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(short num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(short[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (short i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 整数
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(int num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(int[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (int i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 浮点数
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(float num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(float[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (float i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 双精度浮点数
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(double num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(double[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (double i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 长整数
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(long num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(long[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (long i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 数字
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(Number num) {
boolean flag = false;
if (null != num) {
if (num.doubleValue() > 0) {
flag = true;
}
}
return flag;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(Number[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (Number i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否为空
*
* @param str
* 字符串
* @return 如果str不为空返回true
*/
public static boolean isNoEmpty(String str) {
boolean flag = false;
if (str != null && str.replaceAll("//s*", "").length() > 0) {
flag = true;
}
return flag;
}
/**
* 判断是否为空
*
* @param strs
* 字符串数组
* @return 如果strs不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(String[] strs) {
boolean flag = false;
if (strs != null && strs.length > 0) {
for (String s : strs) {
if (Is.isNoEmpty(s)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否为空
*
* @param list
* list集合或set集合
* @return 如果list不为空(list存在至少有一个值不为空)返回true
*/
public static <T> boolean isNoEmpty(Collection<T> list) {
boolean flag = false;
if (list != null && list.size() > 0) {
for (T l : list) {
if (Is.isNoEmpty(l)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否为空
*
* @param map
* map集合
* @return 如果map不为空(map存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(Map<?, ?> map) {
boolean flag = false;
if (map != null && map.size() > 0) {
for (Map.Entry<?, ?> entry : map.entrySet()) {
if (Is.isNoEmpty(entry.getValue())) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否为空
*
* @param objs
* 数据集
* @return 如果都不为空且有值且不为负数返回true
*/
public static boolean isNoEmpty(Object... objs) {
boolean flag = true;
if(objs!=null){
for (Object obj : objs) {
// 任意一项都不能为空
if (obj == null) {
flag = false;
break;
}
// 判断不同数据是否符合规则
if (obj instanceof Number) {
// 数字
if (((Number) obj).doubleValue() <= 0) {
flag = false;
break;
}
} else if (obj instanceof String) {
// 字符
if (((String) obj).replaceAll("//s*", "").length() <= 0) {
flag = false;
break;
}
} else if (obj instanceof Collection) {
// 集合
if (!Is.isNoEmpty((Collection<?>) obj)) {
flag = false;
break;
}
} else if (obj instanceof Map) {
// 集合
if (!Is.isNoEmpty((Map<?, ?>) obj)) {
flag = false;
break;
}
} else if (obj.getClass().isArray()) {
// 数组
if (Array.getLength(obj) <= 0) {
flag = false;
break;
}
}
}
}else{
flag = false;
}
return flag;
}
/**
* 为空或为零时返回默认值
*
* @param t
* 参数
* @param def
* 默认值
* @return t为空时返回def
*/
public static <T> T ifNull(T t, T def) {
if (!Is.isNoEmpty(t)) {
// 为空
t = def;
}
return t;
}
/**
* 去除所有空格,换行符,换页符
*
* @param str
* 字符串
* @return 去除后的字符串
*/
public static String trim(String str) {
return str != null ? str.replaceAll("\\s*|\t|\r|\n", "") : str;
}
public static Object ifValue(Object obj){
if(obj=="" || null==obj || obj==" "){
return null;
}
return obj;
}
public static boolean isEmpty(Object str){
if (Is.isNoEmpty(str)) {
return false;
}
return true;
}
/**
* obj转str
* @param obj
* @return
*/
public static String parseStr(Object obj){
return Is.ifNull(obj, "").toString();
}
}
...@@ -96,8 +96,8 @@ spring: ...@@ -96,8 +96,8 @@ spring:
prohibition: 600 prohibition: 600
datasource: datasource:
url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
#用来搜集数据库的所有表 #用来搜集数据库的所有表
db-name: guns db-name: guns
filters: wall,mergeStat filters: wall,mergeStat
......
...@@ -96,8 +96,8 @@ spring: ...@@ -96,8 +96,8 @@ spring:
datasource: datasource:
# 由于父框架的问题,这里本来不应该这样写的 # 由于父框架的问题,这里本来不应该这样写的
url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
db-name: guns #用来搜集数据库的所有表 db-name: guns #用来搜集数据库的所有表
filters: wall,mergeStat filters: wall,mergeStat
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
......
...@@ -30,8 +30,10 @@ spring: ...@@ -30,8 +30,10 @@ spring:
datasource: datasource:
driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/school_center?useSSL=false url: jdbc:mysql://localhost:3306/school_center?useSSL=false
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
# username: root
# password: AMrGBg6ZSsRrDLs6
zuul: zuul:
ribbon: ribbon:
eager-load: eager-load:
......
...@@ -30,8 +30,10 @@ spring: ...@@ -30,8 +30,10 @@ spring:
datasource: datasource:
driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://172.18.101.171:3306/school_center?useSSL=false url: jdbc:mysql://172.18.101.171:3306/school_center?useSSL=false
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
# username: root
# password: AMrGBg6ZSsRrDLs6
zuul: zuul:
ribbon: ribbon:
eager-load: eager-load:
......
...@@ -131,8 +131,8 @@ spring: ...@@ -131,8 +131,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
...@@ -131,8 +131,8 @@ spring: ...@@ -131,8 +131,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
...@@ -129,8 +129,8 @@ spring: ...@@ -129,8 +129,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
...@@ -129,8 +129,8 @@ spring: ...@@ -129,8 +129,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
...@@ -129,8 +129,8 @@ spring: ...@@ -129,8 +129,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
...@@ -129,8 +129,8 @@ spring: ...@@ -129,8 +129,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
...@@ -19,26 +19,47 @@ import com.winsun.bean.SysUser; ...@@ -19,26 +19,47 @@ import com.winsun.bean.SysUser;
import com.winsun.bean.YrymReport; import com.winsun.bean.YrymReport;
import com.winsun.mapper.*; import com.winsun.mapper.*;
import com.winsun.rabbitmq.RabbitProducer; import com.winsun.rabbitmq.RabbitProducer;
import com.winsun.utils.ImportExcel; import com.winsun.utils.*;
import com.winsun.utils.MyBatisPlusUpdateUtils;
import com.winsun.utils.YrymReportUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.ContentBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.*; import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.net.ssl.SSLHandshakeException;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.*;
...@@ -71,6 +92,13 @@ public class OrderController extends BaseController { ...@@ -71,6 +92,13 @@ public class OrderController extends BaseController {
private static String SL_COMPANY = "快递公司(快递方式为快递必须填写)"; private static String SL_COMPANY = "快递公司(快递方式为快递必须填写)";
private static String SL_KUAIDORDER = "快递单号(快递方式为快递必须填写)"; private static String SL_KUAIDORDER = "快递单号(快递方式为快递必须填写)";
/**
* 预制卡清单模板列名
*/
private static String YZK_ORDERNUMBER = "订单编号(必填)";
private static String BUSINESS_NUMBER = "办理号码(必填)";
private static String BUSINESS_ICCID = "iccid(必填)";
private static OrderMapper orderMapper; private static OrderMapper orderMapper;
private static SchoolMapper schoolMapper; private static SchoolMapper schoolMapper;
...@@ -81,9 +109,16 @@ public class OrderController extends BaseController { ...@@ -81,9 +109,16 @@ public class OrderController extends BaseController {
private ExportExcelMapper exportExcelMapper; private ExportExcelMapper exportExcelMapper;
protected ThreadPoolTaskExecutor threadPool;
protected static Basemapper basemapper;
@Autowired @Autowired
private RabbitProducer taskImport; private RabbitProducer taskImport;
private InputStream in = this.getClass().getResourceAsStream("/txtfiledetail.properties");
private Properties prop = new Properties();
@Autowired @Autowired
public OrderController(OrderMapper orderMapper, SchoolMapper schoolMapper, SysUserMapper sysUserMapper, public OrderController(OrderMapper orderMapper, SchoolMapper schoolMapper, SysUserMapper sysUserMapper,
AppMapper appMapper, ExportExcelMapper exportExcelMapper) { AppMapper appMapper, ExportExcelMapper exportExcelMapper) {
...@@ -176,19 +211,24 @@ public class OrderController extends BaseController { ...@@ -176,19 +211,24 @@ public class OrderController extends BaseController {
//@RequestMapping(value="list", method = RequestMethod.POST) //@RequestMapping(value="list", method = RequestMethod.POST)
public ResponseData<Page<Order>> listOrder( public ResponseData<Page<Order>> listOrder(
@RequestParam(name = "createTimeStart", required = false) String createTimeStart, @RequestParam(name = "createTimeStart", required = false) String createTimeStart,
@RequestParam(name = "createTimeEnd", required = false) String createTimeEnd, @RequestParam(name = "successTimeStart", required = false) String successTimeStart, @RequestParam(name = "createTimeEnd", required = false) String createTimeEnd,
@RequestParam(name = "successTimeEnd", required = false) String successTimeEnd, @RequestParam("userType") String userType, @RequestParam(name = "successTimeStart", required = false) String successTimeStart,
@RequestParam(name = "successTimeEnd", required = false) String successTimeEnd,
@RequestParam("userType") String userType,
@RequestParam(name = "orderNumber", required = false) String orderNumber, @RequestParam(name = "kapin", required = false) String kapin, @RequestParam(name = "orderNumber", required = false) String orderNumber, @RequestParam(name = "kapin", required = false) String kapin,
@RequestParam(name = "businessNumber", required = false) String businessNumber, @RequestParam(name = "contactNumber", required = false) String contactNumber, @RequestParam(name = "businessNumber", required = false) String businessNumber, @RequestParam(name = "contactNumber", required = false) String contactNumber,
@RequestParam(name = "hehuorenSchool", required = false) String hehuorenSchool, @RequestParam(name = "hehuorenName", required = false) String hehuorenName, @RequestParam(name = "hehuorenSchool", required = false) String hehuorenSchool, @RequestParam(name = "hehuorenName", required = false) String hehuorenName,
@RequestParam(name = "orderStatus", required = false) String orderStatus, @RequestParam(name = "orderStatus", required = false) String orderStatus,@RequestParam(name = "hehuorenArea", required = false) String hehuorenArea,
@RequestParam(name = "customerName", required = false) String customerName, @RequestParam(name = "pageNo", required = false) int pageNo, @RequestParam(name = "customerName", required = false) String customerName, @RequestParam(name = "pageNo", required = false) int pageNo,
@RequestParam(name = "pageSize", required = false) int pageSize) { @RequestParam(name = "pageSize", required = false) int pageSize) {
ShiroUser user = getShiroUser(); ShiroUser user = getShiroUser();
if (!user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员"))) { if (!user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员"))) {
return ResponseData.error("无数据权限"); return ResponseData.error("无数据权限");
} }
Wrapper<Order> wrapper = new EntityWrapper(); Wrapper<Order> wrapper = new EntityWrapper();
wrapper.isNull("kd_order_id");
wrapper.notIn("user_type",3,5,9,10);
wrapper.ge(StringUtils.isNotBlank(createTimeStart), "create_time", createTimeStart); wrapper.ge(StringUtils.isNotBlank(createTimeStart), "create_time", createTimeStart);
wrapper.le(StringUtils.isNotBlank(createTimeEnd), "create_time", createTimeEnd); wrapper.le(StringUtils.isNotBlank(createTimeEnd), "create_time", createTimeEnd);
wrapper.ge(StringUtils.isNotBlank(successTimeStart), "success_time", successTimeStart); wrapper.ge(StringUtils.isNotBlank(successTimeStart), "success_time", successTimeStart);
...@@ -201,11 +241,13 @@ public class OrderController extends BaseController { ...@@ -201,11 +241,13 @@ public class OrderController extends BaseController {
wrapper.eq(StringUtils.isNotBlank(contactNumber), "contact_number", contactNumber); wrapper.eq(StringUtils.isNotBlank(contactNumber), "contact_number", contactNumber);
wrapper.eq(StringUtils.isNotBlank(hehuorenSchool), "hehuoren_school", hehuorenSchool); wrapper.eq(StringUtils.isNotBlank(hehuorenSchool), "hehuoren_school", hehuorenSchool);
wrapper.like(StringUtils.isNotBlank(hehuorenName), "hehuoren_name", hehuorenName, SqlLike.DEFAULT); wrapper.like(StringUtils.isNotBlank(hehuorenName), "hehuoren_name", hehuorenName, SqlLike.DEFAULT);
wrapper.eq(StringUtils.isNotBlank(hehuorenArea), "hehuoren_area", hehuorenArea);
wrapper.eq(StringUtils.isNotBlank(orderStatus), "order_status", orderStatus).orderBy("create_time",false); wrapper.eq(StringUtils.isNotBlank(orderStatus), "order_status", orderStatus).orderBy("create_time",false);
Page<Order> page = new Page<>(pageNo, pageSize); Page<Order> page = new Page<>(pageNo, pageSize);
List<Order> aPackage = orderMapper.selectPage(page, wrapper); List<Order> aPackage = orderMapper.selectPage(page, wrapper);
page.setRecords(aPackage); page.setRecords(aPackage);
return ResponseData.success(page, "查询完毕!"); return ResponseData.success(page, "查询完毕!");
} }
...@@ -692,6 +734,213 @@ public class OrderController extends BaseController { ...@@ -692,6 +734,213 @@ public class OrderController extends BaseController {
} }
/** /**
* 上传快递清单
*
* @param file 上传预制卡批量选号的数据文件
* @return
*/
@Permission(menuname = "上传预制卡批量选号清单", value = "importPrefabrication", method = RequestMethod.POST)
public ResponseData<String> importPrefabrication(@RequestParam(name = "file") MultipartFile file) {
StringBuffer error = new StringBuffer();
if (!StringUtils.endsWithAny(file.getOriginalFilename(), "xlsx", "xls")) {
return ResponseData.error("手工上传数据仅支持Excel文件,其他格式不支持!");
}
if ((double) file.getSize() / 1048576 > 100) {
return ResponseData.error("文件过大,无法上传");
}
ShiroUser user = getShiroUser();
// 当前是否有数据权限
boolean hasDataPermission = user.getRoleNames().stream().anyMatch(data -> StringUtils.equalsAny(data, "活动上单员", "数据管理员", "超级管理员"));
if (!hasDataPermission) {
return ResponseData.error("无数据权限!");
}
ImportExcel importExcel = null;
try {
importExcel = new ImportExcel(file, HEADER_NUM, SHEET_INDEX);
} catch (Exception e) {
log.error("预制卡批量选号清单导入异常", e.getMessage());
return ResponseData.error("导入异常!");
}
List<Map<String, Object>> listMap = importExcel.getDataListMap();
if (listMap.size() == 0) {
return ResponseData.error("文件不能为空");
}
if (listMap.get(0).size() != 3) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("a").toString().equals(YZK_ORDERNUMBER)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("b").toString().equals(BUSINESS_NUMBER)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("c").toString().equals(BUSINESS_ICCID)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
//校验数据
try {
//校验数据
for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> temp = listMap.get(i);
if (!temp.containsKey("a")) {
return ResponseData.error("第" + (i + 1) + "行的订单编号不能为空");
}
if (StringUtils.isBlank(temp.get("a").toString())) {
return ResponseData.error("第" + (i + 1) + "行的订单编号不能为空");
}
if (!temp.containsKey("b")) {
return ResponseData.error("第" + (i + 1) + "行的办理号码不能为空");
}
if (StringUtils.isBlank(temp.get("b").toString())) {
return ResponseData.error("第" + (i + 1) + "行的办理号码不能为空");
}
if (!temp.containsKey("c")) {
return ResponseData.error("第" + (i + 1) + "行的iccid不能为空");
}
if (StringUtils.isBlank(temp.get("c").toString())) {
return ResponseData.error("第" + (i + 1) + "行的iccid不能为空");
}
}
//检查excel表中是否有重复人员编号
int size = listMap.size();
Set<String> accountSet = new HashSet<>(size);
for (int i = 0; i < size; i++) {
Map<String, Object> temp = listMap.get(i);
accountSet.add((String) temp.get("a"));
}
if (accountSet.size() != size) {
return ResponseData.error("文件中有重复的订单编号,请确认订单编号不能重复!");
}
} catch (Exception e) {
log.error("预制卡批量选号清单导入异常", e.getMessage());
return ResponseData.error("导入异常!");
}
int number = 0;
Date successTime = new Date();
Integer integer = null;
for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> map = listMap.get(i);
String orderNumber = map.get("a").toString();
String businessNumber = map.get("b").toString();
String iccid = map.get("c").toString();
List<Map<String, Object>> orderByNumber = orderMapper.selectOrderIdByOrderNumber(orderNumber);
if(orderByNumber.size()==0){
continue;
}
Map<String, Object> map1 = orderByNumber.get(0);
map1.put("business_number",number);
map1.put("business_iccid",iccid);
map1.put("send_type", "快递");
map1.put("order_status", "提交中");
threadPool.execute(new Runnable() {
@Override
public void run() {
String id = map1.get("id").toString();
Map<String, Object> orderMap = orderMapper.selectOrderById(map1.get("id").toString());
String hehuoren_id = orderMap.get("hehuoren_id").toString();
String business_number = orderMap.get("business_number").toString();
String business_iccid = orderMap.get("business_iccid").toString();
Map<String, Object> partnerById = orderMapper.findPartnerById(hehuoren_id);
String name = partnerById.get("name").toString();
Map<String, Object> map1 = new HashMap<>();
int ysm = Integer.parseInt(partnerById.get("ysm").toString());
Map<String, Object> ysmById = orderMapper.findYsmById(ysm);
map1.put("ysmUser",ysmById.get("user_name"));
map1.put("sign",ysmById.get("sign"));
map1.put("idCardUrl1", orderMap.get("id_cardz"));
map1.put("idCardUrl2", orderMap.get("id_cardf"));
map1.put("idCardUrl3", orderMap.get("id_cardzs"));
map1.put("idCardUrl4", orderMap.get("id_cardzs"));
map1.put("cardType", orderMap.get("kapin"));
if(orderMap.get("package_id").equals("49")){
map1.put("userName", orderMap.get("parent_name"));
}else{
map1.put("userName", orderMap.get("customer_name"));
}
map1.put("linkPhone", orderMap.get("contact_number"));
map1.put("idCard", orderMap.get("id_card"));
map1.put("orderPhone", business_number);
map1.put("iccId", business_iccid);
String site = orderMap.get("site").toString();
String[] split = site.split(" ");
map1.put("sheng",split[0]);
map1.put("shi",split[1]);
map1.put("xian",split[2]);
map1.put("address",orderMap.get("address"));
String result="";
result = sendOrder(map1);
JSONObject resultDataJson = JSONObject.fromObject(result);
String orderNum = resultDataJson.getString("orderNumber");
Map<String,Object> map3 = new HashMap<>();
if (Is.isNoEmpty(orderNum)) {
map3.put("id", id);
map3.put("send_type", "快递");
map3.put("order_status", "审核中");
map3.put("order_id",orderNum);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
map3.put("update_time", sdf.format(new Date()));
}else{
map3.put("id", id);
map3.put("order_status", "异常单");
String msg = resultDataJson.getString("msg");
map3.put("msg",msg);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
map3.put("update_time", sdf.format(new Date()));
try {
orderMapper.inserOrderHis(id,"审核失败",new Date(),"智能平台审核");
} catch (Exception e) {
e.printStackTrace();
}
}
try {
basemapper.update("hhr_order",map3);
} catch (Exception e) {
e.printStackTrace();
}
}
});
int num = 0;
try {
num = basemapper.update("hhr_order",map1) > 0 ? 1 : 0;
number+=num;
} catch (Exception e) {
e.printStackTrace();
}
Map<String, Object> history = new HashMap<String, Object>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
history.put("order_id", map1.get("id"));
history.put("create_date", sdf.format(new Date()));
history.put("status", "实名验证中");
try {
basemapper.insert("hhr_order_history", history);
} catch (Exception e) {
e.printStackTrace();
}
if (integer == 1) {
number++;
} else {
error.append("第" + (i + 1) + "行的更新失败,");
}
}
error.append("成功更新" + number + "条数据!");
return ResponseData.success(error.toString(), "导入完成");
}
/**
* 受理订单模板下载 * 受理订单模板下载
* *
* @return * @return
...@@ -786,6 +1035,44 @@ public class OrderController extends BaseController { ...@@ -786,6 +1035,44 @@ public class OrderController extends BaseController {
return ResponseData.error("快递模板出错"); return ResponseData.error("快递模板出错");
} }
@Permission(menuname = "预制卡批量填号导入模板", method = RequestMethod.POST, value = "downloadMoBanYZK")
public ResponseData downloadMoBanYZK() {
ArrayList<String> columns = new ArrayList<>();
columns.add(YZK_ORDERNUMBER);
columns.add(BUSINESS_NUMBER);
columns.add(BUSINESS_ICCID);
ServletOutputStream os = null;
XSSFWorkbook workbook = new XSSFWorkbook();
try {
//创建工作表
XSSFSheet sheet = workbook.createSheet("预制卡批量填号清单");
sheet.setColumnWidth(0, 5000);
sheet.setColumnWidth(1, 4000);
sheet.setColumnWidth(2, 9000);
//添加表头
final XSSFRow row = sheet.createRow(0);
XSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
columns.forEach(val -> {
XSSFCell cell = row.createCell(Math.max(row.getLastCellNum(), 0));
cell.setCellValue(val);
});
HttpServletResponse response = getHttpServletResponse();
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;fileName=data.xlsx");
os = response.getOutputStream();
workbook.write(os);
os.flush();
} catch (IOException e) {
log.error("预制卡批量填号模板文件出错!" + e.getMessage(), e);
} finally {
IOUtils.closeQuite(workbook, os);
}
return ResponseData.error("预制卡批量填号模板出错");
}
XSSFSheet getXSSFSheet(XSSFSheet sheet, List<String> datas, int firstcol, int lastcol) { XSSFSheet getXSSFSheet(XSSFSheet sheet, List<String> datas, int firstcol, int lastcol) {
if (datas.size() == 0) { if (datas.size() == 0) {
...@@ -802,4 +1089,338 @@ public class OrderController extends BaseController { ...@@ -802,4 +1089,338 @@ public class OrderController extends BaseController {
sheet.addValidationData(validation); sheet.addValidationData(validation);
return sheet; return sheet;
} }
// 预实名接口发起
public String sendOrder(Map<String, Object> map) {
try {
prop.load(in);
} catch (IOException e1) {
e1.printStackTrace();
}
String hhr_img = prop.getProperty("hhr_img");
String str = "";
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String timeStr = simpleDateFormat.format(new Date());
String cardType = (String) map.get("cardType");
if (cardType.contains("大王卡")) {
map.put("productId", "483");
map.put("salesId", "1185");
} else if (cardType.contains("天翼学生证")) {
map.put("productId", "1327");
map.put("salesId", "4453");
} else {
map.put("productId", "727");
map.put("salesId", "2137");
}
map.put("timeStr", timeStr);
map.put("orderNum", "XY" + timeStr);
map.put("imgUrl1", (String) map.get("idCardUrl1"));
map.put("imgUrl2", (String) map.get("idCardUrl2"));
map.put("imgUrl3", (String) map.get("idCardUrl3"));
map.put("imgUrl4", (String) map.get("idCardUrl4"));
str = sendAitransOrder(map, 0);
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
// 保存卡品认证信息
public String sendAitransOrder(Map<String, Object> map, int count) throws NoSuchAlgorithmException, UnsupportedEncodingException {
HttpHost proxy = new HttpHost("172.18.101.170", 3128);
RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(600000).setConnectTimeout(600000)
.setConnectionRequestTimeout(600000).setProxy(proxy).build();
CloseableHttpClient httpclient = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
String resultStr = "";
HttpEntity entity = null;
// https://ismart.mini189.cn/api/create-order.action
// https://ismarttest.mini189.cn/api/create-order.action
HttpPost httpPost = new HttpPost("https://ismart.mini189.cn/api/create-order.action");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).build();
httpPost.setConfig(requestConfig);
Map<String, String> signMap = new HashMap<String, String>();
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, Charset.forName("UTF-8"));
builder.addTextBody("service", "order.prepaidgift.create", contentType);// api标识,必填且唯一
signMap.put("service", "order.prepaidgift.create");
builder.addTextBody("userName", (String) map.get("ysmUser"), contentType);// 用户名,必填
signMap.put("userName", (String) map.get("ysmUser"));
builder.addTextBody("timeStamp", (String) map.get("timeStr"), contentType);// 时间戳(YYYYMMDDHHMMSS),必填
signMap.put("timeStamp", (String) map.get("timeStr"));
builder.addTextBody("productCategory", "预付费礼包", contentType);// 业务类型,必填且唯一
signMap.put("productCategory", "预付费礼包");
builder.addTextBody("govEntCustomer", "0", contentType);// 是否政企客户下单:0:否,1:是,必填
signMap.put("govEntCustomer", "0");
builder.addTextBody("agentName", "", contentType);// 代办人姓名(若是政企客户下单必填)
signMap.put("agentName", "");
builder.addTextBody("agentCardNum", "", contentType);// 代办人身份证号码(若是政企客户下单必填)
signMap.put("agentCardNum", "");
builder.addTextBody("customerName", (String) map.get("userName"), contentType);// 客户姓名,必填
signMap.put("customerName", (String) map.get("userName"));
builder.addTextBody("customerPhone", (String) map.get("linkPhone"), contentType);// 客户(代办人)电话,必填
signMap.put("customerPhone", (String) map.get("linkPhone"));
builder.addTextBody("customerCardType", "身份证", contentType);// 证件类型,必填
signMap.put("customerCardType", "身份证");
builder.addTextBody("customerCardNum", (String) map.get("idCard"), contentType);// 证件号码,必填
signMap.put("customerCardNum", (String) map.get("idCard"));
builder.addTextBody("landId", "44094951", contentType);// 揽装工号,必填
signMap.put("landId", "44094951");
builder.addTextBody("comarketingLanId", "", contentType);// 协销工号,选填
signMap.put("comarketingLanId", "");
builder.addTextBody("groupComarketingLanId", "", contentType);//集团协销工号,选填
signMap.put("groupComarketingLanId", "");
builder.addTextBody("orderOutNum", (String) map.get("orderNum"), contentType);//外部订单编号,选填!;
//通过API接口下单,必须传入一个外部接入商的订单编号,该编号与智能营销系统编号一一对应
signMap.put("orderOutNum", (String) map.get("orderNum"));
builder.addTextBody("orderSource", "", contentType);// 订单来源 ,选填
signMap.put("orderSource", "");
builder.addTextBody("orderSourceNum", "", contentType);//
//订单来源单号,选填;与订单来源对应,用于业务上记录订单的来源订单编号
signMap.put("orderSourceNum", "");
builder.addTextBody("salePointCode", "", contentType);// 销售点编码,选填
signMap.put("salePointCode", "");
builder.addTextBody("personCode", "", contentType);// 人员编码,选填
signMap.put("personCode", "");
builder.addTextBody("distributorSmsReceive", "", contentType);// 分销商短信接收号码,选填
signMap.put("distributorSmsReceive", "");
builder.addTextBody("batchPickUp", "0", contentType);// 是否批量提货,必填
// 0:否,1:是
signMap.put("batchPickUp", "0");
builder.addTextBody("deliveryProvince", (String) map.get("sheng"), contentType);// 配送地址-省,必填
signMap.put("deliveryProvince", (String) map.get("sheng"));
builder.addTextBody("deliveryCity", (String) map.get("shi"), contentType);// 配送地址-市,必填
signMap.put("deliveryCity", (String) map.get("shi"));
builder.addTextBody("deliveryDistrict", (String) map.get("xian"), contentType);// 配送地址-区,必填
signMap.put("deliveryDistrict", (String) map.get("xian"));
builder.addTextBody("deliveryAddress", (String) map.get("address"), contentType);// 配送地址-详细地址,必填
signMap.put("deliveryAddress", (String) map.get("address"));
builder.addTextBody("deliveryContact", (String) map.get("userName"), contentType);// 联系人,必填
signMap.put("deliveryContact", (String) map.get("userName"));
builder.addTextBody("deliveryContactPhone", (String) map.get("linkPhone"), contentType);// 联系电话,必填
signMap.put("deliveryContactPhone", (String) map.get("linkPhone"));
builder.addTextBody("deliveryContactPhone2", "", contentType);// 联系电话2,选填
signMap.put("deliveryContactPhone2", "");
builder.addTextBody("invoiced", "0", contentType);// 是否需要发票,必填 0:不需要;1:一次性发票;2:分月发票
signMap.put("invoiced", "0");
builder.addTextBody("invoiceTitle", "", contentType);// 发票抬头,若需要发票必填
signMap.put("invoiceTitle", "");
builder.addTextBody("invoiceDeliveryAddress", "", contentType);// 电子邮箱,若需要发票必填
signMap.put("invoiceDeliveryAddress", "");
builder.addTextBody("deliveryType", "代理商自行发货", contentType);// 发货类型,必填,填写只能填同德仓发货或者代理商自行发货或者 现场派卡(其它信息的要求与代理商自行发货类似)
signMap.put("deliveryType", "代理商自行发货");// 若填写代理商自行发货或现场派卡,则下单时有几个产品,就需要填写多少个实物串号
builder.addTextBody("deliveryCompany", "", contentType);// 配送公司,必填,填写只能填顺丰速运或者如风达或者京东快递或者EMS
signMap.put("deliveryCompany", "");// 若发货类型选择代理商自行发货,则不用填写(填写也无效)
builder.addTextBody("collection", "", contentType);// 回收资料,选填,若填写只能填写1(表示身份证复印件)
signMap.put("collection", "");
builder.addTextBody("gift", "", contentType);// 礼品,选填,请通过礼品列表接口获取
signMap.put("gift", "");
builder.addTextBody("giftNum", "", contentType);// 礼品数量,选填,若礼品填写则必填且为正整数
signMap.put("giftNum", "");
List<Map<String, Object>> productList = new ArrayList<Map<String, Object>>();// 产品信息
List<Map<String, Object>> paymentList = new ArrayList<Map<String, Object>>();// 销售品信息(费用项)
List<Map<String, Object>> inPropertyList = new ArrayList<Map<String, Object>>();// 产品属性
List<Map<String, Object>> appendPropertyList = new ArrayList<Map<String, Object>>();// 产品附加扩展属性
List<Map<String, Object>> addPropertyList = new ArrayList<Map<String, Object>>();// 自定义产品属性
// 下单产品(如有多个请建立多个map,但产品总数不能超过5个)
Map<String, Object> productMap = new HashMap<String, Object>();
// 产品
productMap.put("productId", map.get("productId"));// 产品id,必填,请通过产品列表接口获取
productMap.put("count", "");// 产品数量,选填(若不填默认为1)
// 该数量仅供发货类型为同德仓发货且批量提货为否时填写,若选择代理商自行发货或批量提货为是,则填写无效
productMap.put("count2", "");// 产品数量,选填(若不填默认为1);该数量仅供批量提货为是时使用
// 若选择批量提货为否时,则填写无效
productMap.put("sn", map.get("iccId"));// 实物串号,选填(若选择代理商自行发货,必填;其他情况填写无效)
// 销售品信息(费用项)必填,若有终端,请将费用项填写在此
Map<String, Object> paymentListMap = new HashMap<String, Object>();
paymentListMap.put("id", map.get("salesId"));// 收费项ID,选填;请通过销售品列表接口获取,若不填表示终端补收款
paymentListMap.put("saleName", "");// 销售品名称,选填,若id不填写此项必填写,且只能为终端补收款
// paymentListMap.put("saleAmount", "");// 售价,选填
paymentListMap.put("payType", "3");// 缴费方式,必填(例:payType:3)3:代理商打款4:穗易付7:货到付款9:第三方托收
paymentListMap.put("payAmount", "0");// 打款金额(支付金额),若选择代理商打款或者穗易付,此项必填
paymentListMap.put("saleAmount", "");// 打款金额,若选择货到付款,此项必填
paymentListMap.put("payPlatform", "");// 支付平台,若选择穗易付,此项必填
paymentListMap.put("electronicPayNumber", "");// 支付流水号,若选择穗易付,此项必填
paymentListMap.put("payOrderNumber", "");// 穗易付订单号,若选择穗易付,此项必填
paymentListMap.put("monthUserid", "");//用户ID,缴费方式为“第三方托收”时必填
paymentListMap.put("monthPlatform", "");//签约平台,缴费方式为“第三方托收”时必填
paymentListMap.put("monthFlowno", "");//签约流水号,缴费方式为“第三方托收”时必填
paymentListMap.put("monthNumber", "");//签约协议号,缴费方式为“第三方托收”时必填
paymentListMap.put("monthTime", "");//签约时间,缴费方式为“第三方托收”时必填
paymentListMap.put("monthEffectiveTime", "");//签约生效时间,缴费方式为“第三方托收”时必填
paymentListMap.put("monthUneffectiveTime", "");//签约失效时间,缴费方式为“第三方托收”时必填
paymentList.add(paymentListMap);
productMap.put("payment", paymentList);
// 产品属性 必填业务号码属性,name=业务号码,value=11位数字或者随机;若还有其他属性可建立多个map添加
// 若发货类型选择代理商自行发货,则该value值必须填写11位数字
Map<String, Object> inPropertyListMap = new HashMap<String, Object>();
inPropertyListMap.put("name", "业务号码");
inPropertyListMap.put("value", map.get("orderPhone"));
inPropertyList.add(inPropertyListMap);
productMap.put("inpProperties", inPropertyList);
// 产品自定义属性;选填,没有则为null
// 注:若填写请属性名和属性值都填写,若只填写其中一项则无效
Map<String, Object> addPropertyListMap = new HashMap<String, Object>();
addPropertyListMap.put("name", null);
addPropertyListMap.put("value", null);
addPropertyList.add(addPropertyListMap);
productMap.put("addProperties", addPropertyList);
productList.add(productMap);
// 将对象装换为json字符串
String productJson = JSONArray.fromObject(productList).toString();
try {
builder.addTextBody("productJson", URLEncoder.encode(productJson, "UTF-8"), contentType);// 产品信息,必填
signMap.put("productJson", URLEncoder.encode(productJson, "UTF-8"));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//身份证正面,选填
File file1 = new File((String) map.get("imgUrl1"));
//身份证背面,选填
File file2 = new File((String) map.get("imgUrl2"));
//手持证件,选填
File file3 = new File((String) map.get("imgUrl3"));
//手持证件2,选填
File file4 = new File((String) map.get("imgUrl4"));
if (file1 != null) {
ContentBody sfzzmFile = new FileBody(file1);
builder.addPart("sfzzmFile", sfzzmFile);
}
if (file2 != null) {
ContentBody sfzbmFile = new FileBody(file2);
builder.addPart("sfzbmFile", sfzbmFile);
}
if (file3 != null) {
ContentBody sfzscFile = new FileBody(file3);
builder.addPart("sfzscFile", sfzscFile);
}
if (file4 != null) {
ContentBody sfzsc2File = new FileBody(file4);
builder.addPart("sfzsc2File", sfzsc2File);
}
List<String> keys = new ArrayList<String>();
keys.addAll(signMap.keySet());
Collections.sort(keys);// key按字符串升序
String value, plaintext = "";
for (String key : keys) {
value = signMap.get(key);
plaintext = plaintext.concat(value);
}
plaintext = plaintext.concat((String) map.get("sign"));
String sign = Md5.encryption(plaintext);// md5加密
builder.addTextBody("sign", sign, contentType);// 签名,必填
try {
//httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(builder.build());
//System.out.println("[CREATE_ORDER]移动产品下单接口,提交参数" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
long startTime = System.currentTimeMillis();
Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost);
long endTime = System.currentTimeMillis();
log.info("接口调用时间:" + (endTime - startTime) + "ms");
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
resultStr = httpResult;
log.info("[CREATE_ORDER]预付费下单接口,返回信息:" + httpResult);
httpclient.close();
JSONObject resultDataJson = JSONObject.fromObject(httpResult);
String isSuccess = resultDataJson.getString("status");
String orderNum = resultDataJson.getString("orderNumber");
if ("000001".equals(isSuccess)) {
log.info("[CREATE_ORDER]下单成功,orderNum=" + orderNum);
}
} catch (SSLHandshakeException s) {
count++;
if (count < 20) {
resultStr = sendAitransOrder(map, count);
} else {
log.error("[HTTP] [CREATE_ORDER] 预付费下单接口异常20次");
}
} catch (Exception e) {
log.error("[HTTP] [CREATE_ORDER] 预付费下单接口异常");
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return resultStr;
}
} }
package com.winsun.utils;
import javax.net.ssl.*;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
/**
* @author ljh
* @Description:常量类
* @Title: Constant
* @date 2018年5月16日下午6:55:54
* @version 1.0
*/
public class Constant {
/* 默认一页显示10条数据 */
public final static Integer PAGENUM = 2;
/* 默认第一页 */
public final static Integer FROMPAGE = 0;
/*用户状态*/
public final static String USERQIDONG = "1";//启用
public final static String USERJINYONG = "0";//禁用
/*支付参数*/
public final static String CLIENTNUMBER = "xyzxyql"; //商户标识,由穗易付平台统一分配
public final static String KEY = "E805F0305C455BA7C5BAE3796C6500BD"; //商户标识,由穗易付平台统一分配
public final static String USERNAME = "apitest"; //智能平台提供测试的账号
public final static String USERNAMEKEY = "46b97294d4dac3f62ee42f3ab2804f68"; //智能平台提供的测试key
public final static String ZHENGSHIAUCCON = "ruany"; //智能平台提供的正式账号
public final static String ZHANGSHIKEY = "3df143292455bfea88bc613c53004d36"; //智能平台提供的正式key
// public final static String ZHENGSHIAUCCON = "xiaoykd"; //智能平台提供的正式账号
// public final static String ZHANGSHIKEY = "d345040accff0421d03f760a03e5cbd9"; //智能平台提供的正式key
public final static String ZHANGSHIURL = "https://ismart.mini189.cn/api/"; //智能平台提供的正式key
public final static String PRODUCTCATEGORY = "单宽带"; //只能平台提供的key
// public final static String TOMCATURL = "http://183.57.78.132:8080"; //Linux外网服务器地址
// public final static String INTRANETURL = "http://10.3.1.21:8080"; //Linux内网服务器地址
public final static String TOMCATURL = "http://yrym.winsun-aly.com"; //省windows外网服务器地址
public final static String INTRANETURL = "http://172.51.229.10:8081"; //省windows内网服务器地址
// public final static String TOMCATURL = "http://ue189.com:8529"; //服务器地址
// public final static String INTRANETURL = "http://ue189.com:8529"; //服务器地址
// public final static String TOMCATURL = "http://127.0.0.1:8080"; //服务器地址
// public final static String INTRANETURL = "http://127.0.0.1:8080"; //服务器地址
public final static String PRODUCTSKU481 = "481"; //产品sku:校园宽带300元/年
public final static String PRODUCTSKU479 = "479"; //产品sku:校园宽带30元/月
public final static String PRODUCTSKU479Str = "30元"; //产品sku:校园宽带30元/月
public final static String PRODUCTSKU481Str = "300元"; //产品sku:校园宽带30元/月
public final static String Payment0 = "0"; //支付方式:为翼支付网厅
public final static String Payment1 = "1"; //支付方式:为支付宝
public final static String Payment3 = "3"; //支付方式:为微信支付
public static final String VALIDATECODE_SESSION_KEY = "validatecode"; // 验证码 session key
/*宽带图片*/
public final static String KUANDAIIMAGE = "kuandai";//封面图
public final static String IMGBDURL = "/static/images/temp/";//图片存放位置
public final static String KDIMGBDURL = "/static/images/kuandai/";//图片存放位置
public final static String ORDERSTATUS1 = "1"; // 待提交
public final static String ORDERSTATUS2 = "2"; // 待受理
public final static String ORDERSTATUS3 = "3"; // 受理成功【待收费】
public final static String ORDERSTATUS4 = "4"; // 归档
public final static String ORDERSTATUS5 = "5"; // 作废
public final static String ORDERSTATUS9 = "9"; // 已收费【待竣工】
public final static String ORDERSTATUS10 = "10"; // 受理异常
public final static String ORDERSTATUS100= "100"; // 未支付
public final static String ROLE1 = "1"; // 用户权限:1管理员 2测试人员 3工作人员 4学校人员
public final static String ROLE2 = "2"; // 用户权限:1管理员 2测试人员 3工作人员 4学校人员
public final static String ROLE3 = "3"; // 用户权限:1管理员 2测试人员 3工作人员 4学校人员
public final static String ROLE4 = "4"; // 用户权限:1管理员 2测试人员 3工作人员 4学校人员
/** 信任任何站点 */
public static void trustEveryone() {
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
} }, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.winsun.utils;
import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;
/**
* 判断非空工具类
*
* @author hjh
*
* @version v1.4 2016-12-19
* @since 2016-2-12
*/
public class Is {
/**
* 私有化构造对象,不能创建对象
*/
private Is() {
super();
throw new UnsupportedOperationException("cannot be instantiated");
}
/**
* 判断是否大于0
*
* @param num
* 整形
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(byte num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(byte[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (byte i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 整形
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(short num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(short[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (short i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 整数
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(int num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(int[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (int i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 浮点数
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(float num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(float[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (float i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 双精度浮点数
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(double num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(double[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (double i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 长整数
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(long num) {
return num > 0 ? true : false;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(long[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (long i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否大于0
*
* @param num
* 数字
* @return true为大于0,false为小于0
*/
public static boolean isNoEmpty(Number num) {
boolean flag = false;
if (null != num) {
if (num.doubleValue() > 0) {
flag = true;
}
}
return flag;
}
/**
* 判断是否为空
*
* @param nums
* 数组
* @return 如果array不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(Number[] nums) {
boolean flag = false;
if (nums != null && nums.length > 0) {
for (Number i : nums) {
if (Is.isNoEmpty(i)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否为空
*
* @param str
* 字符串
* @return 如果str不为空返回true
*/
public static boolean isNoEmpty(String str) {
boolean flag = false;
if (str != null && str.replaceAll("//s*", "").length() > 0) {
flag = true;
}
return flag;
}
/**
* 判断是否为空
*
* @param strs
* 字符串数组
* @return 如果strs不为空(存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(String[] strs) {
boolean flag = false;
if (strs != null && strs.length > 0) {
for (String s : strs) {
if (Is.isNoEmpty(s)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否为空
*
* @param list
* list集合或set集合
* @return 如果list不为空(list存在至少有一个值不为空)返回true
*/
public static <T> boolean isNoEmpty(Collection<T> list) {
boolean flag = false;
if (list != null && list.size() > 0) {
for (T l : list) {
if (Is.isNoEmpty(l)) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否为空
*
* @param map
* map集合
* @return 如果map不为空(map存在至少有一个值不为空)返回true
*/
public static boolean isNoEmpty(Map<?, ?> map) {
boolean flag = false;
if (map != null && map.size() > 0) {
for (Map.Entry<?, ?> entry : map.entrySet()) {
if (Is.isNoEmpty(entry.getValue())) {
flag = true;
break;
}
}
}
return flag;
}
/**
* 判断是否为空
*
* @param objs
* 数据集
* @return 如果都不为空且有值且不为负数返回true
*/
public static boolean isNoEmpty(Object... objs) {
boolean flag = true;
if(objs!=null){
for (Object obj : objs) {
// 任意一项都不能为空
if (obj == null) {
flag = false;
break;
}
// 判断不同数据是否符合规则
if (obj instanceof Number) {
// 数字
if (((Number) obj).doubleValue() <= 0) {
flag = false;
break;
}
} else if (obj instanceof String) {
// 字符
if (((String) obj).replaceAll("//s*", "").length() <= 0) {
flag = false;
break;
}
} else if (obj instanceof Collection) {
// 集合
if (!Is.isNoEmpty((Collection<?>) obj)) {
flag = false;
break;
}
} else if (obj instanceof Map) {
// 集合
if (!Is.isNoEmpty((Map<?, ?>) obj)) {
flag = false;
break;
}
} else if (obj.getClass().isArray()) {
// 数组
if (Array.getLength(obj) <= 0) {
flag = false;
break;
}
}
}
}else{
flag = false;
}
return flag;
}
/**
* 为空或为零时返回默认值
*
* @param t
* 参数
* @param def
* 默认值
* @return t为空时返回def
*/
public static <T> T ifNull(T t, T def) {
if (!Is.isNoEmpty(t)) {
// 为空
t = def;
}
return t;
}
/**
* 去除所有空格,换行符,换页符
*
* @param str
* 字符串
* @return 去除后的字符串
*/
public static String trim(String str) {
return str != null ? str.replaceAll("\\s*|\t|\r|\n", "") : str;
}
public static Object ifValue(Object obj){
if(obj=="" || null==obj || obj==" "){
return null;
}
return obj;
}
public static boolean isEmpty(Object str){
if (Is.isNoEmpty(str)) {
return false;
}
return true;
}
/**
* obj转str
* @param obj
* @return
*/
public static String parseStr(Object obj){
return Is.ifNull(obj, "").toString();
}
}
package com.winsun.utils;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* md5类
*
* @author 董有沛
*
*/
public class Md5 {
// 32位大写明文加密
public static String encryption(String str)
throws NoSuchAlgorithmException, UnsupportedEncodingException {
String result = "";
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update((str).getBytes("UTF-8"));
byte b[] = md5.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0) {
i += 256;
}
if (i < 16) {
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
result = buf.toString().toUpperCase();
return result;
}
/*public final static String encode(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
try {
byte[] btInput = s.getBytes("UTF-8");
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}*/
}
...@@ -129,8 +129,8 @@ spring: ...@@ -129,8 +129,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
...@@ -131,8 +131,8 @@ spring: ...@@ -131,8 +131,8 @@ spring:
datasource: datasource:
master: master:
url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
devtools: devtools:
restart: restart:
......
#############################################################################
#ػFTP
#
ftp_host=127.0.0.1
ftp_port=21
ftp_username=root
ftp_password=qUDZj/w2Rus=
ftp_sys=E:/FTP
hhr_img=/datas/apps/web/tomcats/apache-tomcat-7.0.100-hhr/hhrphoto
#hhr_img=D:/a
sign_img=/datas/apps/web/tomcats/apache-tomcat-7.0.100-hhr/hhr-sign-img
#sign_img=D:/a
yrym_sign=rQXPSHvWvHasj17#5L70ux3KvlWNqoVQ
...@@ -122,8 +122,8 @@ spring: ...@@ -122,8 +122,8 @@ spring:
prohibition: 600 prohibition: 600
datasource: datasource:
url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://localhost:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
filters: wall,mergeStat filters: wall,mergeStat
max-active: 20 max-active: 20
devtools: devtools:
......
...@@ -121,8 +121,8 @@ spring: ...@@ -121,8 +121,8 @@ spring:
prohibition: 600 prohibition: 600
datasource: datasource:
url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true url: jdbc:mysql://172.18.101.171:3306/school_center?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
username: root username: yzzx
password: AMrGBg6ZSsRrDLs6 password: yzzx123!@#
filters: wall,mergeStat filters: wall,mergeStat
max-active: 20 max-active: 20
devtools: devtools:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment