Merge branch 'dev' of http://139.159.177.244:3000/hurui/hai-server into dev
commit
3340ea1beb
@ -0,0 +1,167 @@ |
||||
package com.bweb.controller; |
||||
|
||||
import com.alibaba.fastjson.JSON; |
||||
import com.alibaba.fastjson.JSONObject; |
||||
import com.hai.common.exception.ErrorCode; |
||||
import com.hai.common.exception.ErrorHelp; |
||||
import com.hai.common.exception.SysCode; |
||||
import com.hai.common.pay.util.IOUtil; |
||||
import com.hai.common.pay.util.XmlUtil; |
||||
import com.hai.common.utils.*; |
||||
import com.hai.entity.HighDiscount; |
||||
import com.hai.entity.HighTelOrder; |
||||
import com.hai.model.ResponseData; |
||||
import com.hai.service.TelApiService; |
||||
import io.swagger.annotations.Api; |
||||
import io.swagger.annotations.ApiOperation; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
import javax.annotation.Resource; |
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.io.BufferedOutputStream; |
||||
import java.math.BigDecimal; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Date; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
import java.util.SortedMap; |
||||
import java.util.regex.Pattern; |
||||
|
||||
@RestController |
||||
@RequestMapping(value = "/telApi") |
||||
@Api(value = "电话费充值数据接口") |
||||
public class TelApiController { |
||||
private static Logger log = LoggerFactory.getLogger(TelApiController.class); |
||||
|
||||
@Resource |
||||
private TelApiService telApiService; |
||||
|
||||
/** |
||||
* 中国电信号码格式验证 手机段: 133,153,180,181,189,177,1700,173,199 |
||||
**/ |
||||
private static final String CHINA_TELECOM_PATTERN = "(^1(33|53|77|73|99|8[019])\\d{8}$)|(^1700\\d{7}$)"; |
||||
|
||||
/** |
||||
* 中国联通号码格式验证 手机段:130,131,132,155,156,185,186,145,176,1709 |
||||
**/ |
||||
private static final String CHINA_UNICOM_PATTERN = "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)"; |
||||
|
||||
/** |
||||
* 中国移动号码格式验证 |
||||
* 手机段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705 |
||||
**/ |
||||
private static final String CHINA_MOBILE_PATTERN = "(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)"; |
||||
|
||||
|
||||
@RequestMapping(value = "/telPay", method = RequestMethod.POST) |
||||
@ResponseBody |
||||
@ApiOperation(value = "充值话费") |
||||
public ResponseData certification(@RequestBody HighTelOrder highTelOrder) { |
||||
try { |
||||
|
||||
if (StringUtils.isBlank(highTelOrder.getTel()) || |
||||
highTelOrder.getPrice() == null |
||||
) { |
||||
log.error("telApi -> telPay() error!", "参数错误"); |
||||
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); |
||||
} |
||||
|
||||
int random = (int) (1 + Math.random() * (999999 - 100000 + 1)); |
||||
|
||||
Map<String, Object> map = new HashMap<>(); |
||||
|
||||
String mchid = "HFb44f8_10004"; |
||||
String tel = highTelOrder.getTel(); |
||||
String orderid = "HF" + DateUtil.date2String(new Date(), "yyyyMMddHHmmss") + IDGenerator.nextId(5); |
||||
BigDecimal price = BigDecimal.valueOf(highTelOrder.getPrice()); |
||||
String teltype = isChinaMobilePhoneNum(highTelOrder.getTel()).toString(); |
||||
int timeout = 300; |
||||
String notify = "notify"; |
||||
String time = String.valueOf(new Date().getTime()); |
||||
String APIKEY = "483e5a68fe9bda2f7ab3f2665a0006cd"; |
||||
String sign = mchid + tel + price + orderid + teltype + notify + time + random + APIKEY; |
||||
|
||||
String param = "mchid=" + mchid + |
||||
"&tel=" + tel + |
||||
"&orderid=" + orderid + |
||||
"&price=" + price + |
||||
"&teltype=" + teltype + |
||||
"¬ify=" + notify + |
||||
"&time=" + time + |
||||
"&rand=" + random + |
||||
"&sign=" + MD5Util.encode(sign.getBytes()); |
||||
map.put("from", param); |
||||
|
||||
JSONObject object = HttpsUtils.doSmsPost("http://45.130.154.125:9998/api/telpay", map, new HashMap<>()); |
||||
return ResponseMsgUtil.success(object); |
||||
} catch (Exception e) { |
||||
log.error("HighMerchantController -> insertMerchant() error!", e); |
||||
return ResponseMsgUtil.exception(e); |
||||
} |
||||
} |
||||
|
||||
@RequestMapping(value = "/notify", method = RequestMethod.POST) |
||||
@ApiOperation(value = "话费充值 -> 异步回调") |
||||
public void wechatNotify(HttpServletRequest request, HttpServletResponse response) { |
||||
try { |
||||
|
||||
log.info("话费充值 -> 异步通知:处理开始"); |
||||
|
||||
String notifyXml = null; // 话费充值系统发送的数据(<![CDATA[product_001]]>格式)
|
||||
notifyXml = IOUtil.inputStreamToString(request.getInputStream(), "UTF-8"); |
||||
|
||||
log.info("话费充值系统发送的数据:" + notifyXml); |
||||
SortedMap<String, String> map = XmlUtil.parseXmlToTreeMap(notifyXml, "UTF-8"); |
||||
|
||||
// resXml = notifyService.wechatNotify(map);
|
||||
//
|
||||
//
|
||||
// BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
|
||||
// out.write(resXml.getBytes());
|
||||
// out.flush();
|
||||
// out.close();
|
||||
log.info("话费充值 -> 异步通知:处理完成"); |
||||
} catch (Exception e) { |
||||
log.error("WechatPayController --> wechatNotify() error!", e); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 查询电话属于哪个运营商 |
||||
* |
||||
* @param tel 手机号码 |
||||
* @return 0:不属于任何一个运营商,0:移动,1:联通,2:电信 99: 什么都不是 |
||||
*/ |
||||
public Integer isChinaMobilePhoneNum(String tel) { |
||||
boolean b1 = tel != null && !tel.trim().equals("") && match(CHINA_MOBILE_PATTERN, tel); |
||||
if (b1) { |
||||
return 0; |
||||
} |
||||
b1 = tel != null && !tel.trim().equals("") && match(CHINA_UNICOM_PATTERN, tel); |
||||
if (b1) { |
||||
return 1; |
||||
} |
||||
b1 = tel != null && !tel.trim().equals("") && match(CHINA_TELECOM_PATTERN, tel); |
||||
if (b1) { |
||||
return 2; |
||||
} |
||||
return 99; |
||||
} |
||||
|
||||
/** |
||||
* 匹配函数 |
||||
* |
||||
* @param regex |
||||
* @param tel |
||||
* @return |
||||
*/ |
||||
private static boolean match(String regex, String tel) { |
||||
return Pattern.matches(regex, tel); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,128 @@ |
||||
package com.hai.dao; |
||||
|
||||
import com.hai.entity.HighTelOrder; |
||||
import com.hai.entity.HighTelOrderExample; |
||||
import java.util.List; |
||||
import org.apache.ibatis.annotations.Delete; |
||||
import org.apache.ibatis.annotations.DeleteProvider; |
||||
import org.apache.ibatis.annotations.Insert; |
||||
import org.apache.ibatis.annotations.InsertProvider; |
||||
import org.apache.ibatis.annotations.Options; |
||||
import org.apache.ibatis.annotations.Param; |
||||
import org.apache.ibatis.annotations.Result; |
||||
import org.apache.ibatis.annotations.Results; |
||||
import org.apache.ibatis.annotations.Select; |
||||
import org.apache.ibatis.annotations.SelectProvider; |
||||
import org.apache.ibatis.annotations.Update; |
||||
import org.apache.ibatis.annotations.UpdateProvider; |
||||
import org.apache.ibatis.type.JdbcType; |
||||
import org.springframework.stereotype.Repository; |
||||
|
||||
/** |
||||
* |
||||
* 代码由工具生成,请勿修改!!! |
||||
* 如果需要扩展请在其父类进行扩展 |
||||
* |
||||
**/ |
||||
@Repository |
||||
public interface HighTelOrderMapper extends HighTelOrderMapperExt { |
||||
@SelectProvider(type=HighTelOrderSqlProvider.class, method="countByExample") |
||||
long countByExample(HighTelOrderExample example); |
||||
|
||||
@DeleteProvider(type=HighTelOrderSqlProvider.class, method="deleteByExample") |
||||
int deleteByExample(HighTelOrderExample example); |
||||
|
||||
@Delete({ |
||||
"delete from high_tel_order", |
||||
"where id = #{id,jdbcType=INTEGER}" |
||||
}) |
||||
int deleteByPrimaryKey(Integer id); |
||||
|
||||
@Insert({ |
||||
"insert into high_tel_order (order_id, out_order_id, ", |
||||
"mchid, tel, price, ", |
||||
"`status`, pay_time, ", |
||||
"create_time, update_time, ", |
||||
"ext_1, ext_2, ext_3)", |
||||
"values (#{orderId,jdbcType=VARCHAR}, #{outOrderId,jdbcType=VARCHAR}, ", |
||||
"#{mchid,jdbcType=VARCHAR}, #{tel,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, ", |
||||
"#{status,jdbcType=INTEGER}, #{payTime,jdbcType=TIMESTAMP}, ", |
||||
"#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ", |
||||
"#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" |
||||
}) |
||||
@Options(useGeneratedKeys=true,keyProperty="id") |
||||
int insert(HighTelOrder record); |
||||
|
||||
@InsertProvider(type=HighTelOrderSqlProvider.class, method="insertSelective") |
||||
@Options(useGeneratedKeys=true,keyProperty="id") |
||||
int insertSelective(HighTelOrder record); |
||||
|
||||
@SelectProvider(type=HighTelOrderSqlProvider.class, method="selectByExample") |
||||
@Results({ |
||||
@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true), |
||||
@Result(column="order_id", property="orderId", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="out_order_id", property="outOrderId", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="mchid", property="mchid", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="tel", property="tel", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="price", property="price", jdbcType=JdbcType.DECIMAL), |
||||
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER), |
||||
@Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP), |
||||
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), |
||||
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), |
||||
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR) |
||||
}) |
||||
List<HighTelOrder> selectByExample(HighTelOrderExample example); |
||||
|
||||
@Select({ |
||||
"select", |
||||
"id, order_id, out_order_id, mchid, tel, price, `status`, pay_time, create_time, ", |
||||
"update_time, ext_1, ext_2, ext_3", |
||||
"from high_tel_order", |
||||
"where id = #{id,jdbcType=INTEGER}" |
||||
}) |
||||
@Results({ |
||||
@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true), |
||||
@Result(column="order_id", property="orderId", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="out_order_id", property="outOrderId", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="mchid", property="mchid", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="tel", property="tel", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="price", property="price", jdbcType=JdbcType.DECIMAL), |
||||
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER), |
||||
@Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP), |
||||
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), |
||||
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), |
||||
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR), |
||||
@Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR) |
||||
}) |
||||
HighTelOrder selectByPrimaryKey(Integer id); |
||||
|
||||
@UpdateProvider(type=HighTelOrderSqlProvider.class, method="updateByExampleSelective") |
||||
int updateByExampleSelective(@Param("record") HighTelOrder record, @Param("example") HighTelOrderExample example); |
||||
|
||||
@UpdateProvider(type=HighTelOrderSqlProvider.class, method="updateByExample") |
||||
int updateByExample(@Param("record") HighTelOrder record, @Param("example") HighTelOrderExample example); |
||||
|
||||
@UpdateProvider(type=HighTelOrderSqlProvider.class, method="updateByPrimaryKeySelective") |
||||
int updateByPrimaryKeySelective(HighTelOrder record); |
||||
|
||||
@Update({ |
||||
"update high_tel_order", |
||||
"set order_id = #{orderId,jdbcType=VARCHAR},", |
||||
"out_order_id = #{outOrderId,jdbcType=VARCHAR},", |
||||
"mchid = #{mchid,jdbcType=VARCHAR},", |
||||
"tel = #{tel,jdbcType=VARCHAR},", |
||||
"price = #{price,jdbcType=DECIMAL},", |
||||
"`status` = #{status,jdbcType=INTEGER},", |
||||
"pay_time = #{payTime,jdbcType=TIMESTAMP},", |
||||
"create_time = #{createTime,jdbcType=TIMESTAMP},", |
||||
"update_time = #{updateTime,jdbcType=TIMESTAMP},", |
||||
"ext_1 = #{ext1,jdbcType=VARCHAR},", |
||||
"ext_2 = #{ext2,jdbcType=VARCHAR},", |
||||
"ext_3 = #{ext3,jdbcType=VARCHAR}", |
||||
"where id = #{id,jdbcType=INTEGER}" |
||||
}) |
||||
int updateByPrimaryKey(HighTelOrder record); |
||||
} |
@ -0,0 +1,7 @@ |
||||
package com.hai.dao; |
||||
|
||||
/** |
||||
* mapper扩展类 |
||||
*/ |
||||
public interface HighTelOrderMapperExt { |
||||
} |
@ -0,0 +1,346 @@ |
||||
package com.hai.dao; |
||||
|
||||
import com.hai.entity.HighTelOrder; |
||||
import com.hai.entity.HighTelOrderExample.Criteria; |
||||
import com.hai.entity.HighTelOrderExample.Criterion; |
||||
import com.hai.entity.HighTelOrderExample; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
import org.apache.ibatis.jdbc.SQL; |
||||
|
||||
public class HighTelOrderSqlProvider { |
||||
|
||||
public String countByExample(HighTelOrderExample example) { |
||||
SQL sql = new SQL(); |
||||
sql.SELECT("count(*)").FROM("high_tel_order"); |
||||
applyWhere(sql, example, false); |
||||
return sql.toString(); |
||||
} |
||||
|
||||
public String deleteByExample(HighTelOrderExample example) { |
||||
SQL sql = new SQL(); |
||||
sql.DELETE_FROM("high_tel_order"); |
||||
applyWhere(sql, example, false); |
||||
return sql.toString(); |
||||
} |
||||
|
||||
public String insertSelective(HighTelOrder record) { |
||||
SQL sql = new SQL(); |
||||
sql.INSERT_INTO("high_tel_order"); |
||||
|
||||
if (record.getOrderId() != null) { |
||||
sql.VALUES("order_id", "#{orderId,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getOutOrderId() != null) { |
||||
sql.VALUES("out_order_id", "#{outOrderId,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getMchid() != null) { |
||||
sql.VALUES("mchid", "#{mchid,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getTel() != null) { |
||||
sql.VALUES("tel", "#{tel,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getPrice() != null) { |
||||
sql.VALUES("price", "#{price,jdbcType=DECIMAL}"); |
||||
} |
||||
|
||||
if (record.getStatus() != null) { |
||||
sql.VALUES("`status`", "#{status,jdbcType=INTEGER}"); |
||||
} |
||||
|
||||
if (record.getPayTime() != null) { |
||||
sql.VALUES("pay_time", "#{payTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getCreateTime() != null) { |
||||
sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getUpdateTime() != null) { |
||||
sql.VALUES("update_time", "#{updateTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getExt1() != null) { |
||||
sql.VALUES("ext_1", "#{ext1,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getExt2() != null) { |
||||
sql.VALUES("ext_2", "#{ext2,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getExt3() != null) { |
||||
sql.VALUES("ext_3", "#{ext3,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
return sql.toString(); |
||||
} |
||||
|
||||
public String selectByExample(HighTelOrderExample example) { |
||||
SQL sql = new SQL(); |
||||
if (example != null && example.isDistinct()) { |
||||
sql.SELECT_DISTINCT("id"); |
||||
} else { |
||||
sql.SELECT("id"); |
||||
} |
||||
sql.SELECT("order_id"); |
||||
sql.SELECT("out_order_id"); |
||||
sql.SELECT("mchid"); |
||||
sql.SELECT("tel"); |
||||
sql.SELECT("price"); |
||||
sql.SELECT("`status`"); |
||||
sql.SELECT("pay_time"); |
||||
sql.SELECT("create_time"); |
||||
sql.SELECT("update_time"); |
||||
sql.SELECT("ext_1"); |
||||
sql.SELECT("ext_2"); |
||||
sql.SELECT("ext_3"); |
||||
sql.FROM("high_tel_order"); |
||||
applyWhere(sql, example, false); |
||||
|
||||
if (example != null && example.getOrderByClause() != null) { |
||||
sql.ORDER_BY(example.getOrderByClause()); |
||||
} |
||||
|
||||
return sql.toString(); |
||||
} |
||||
|
||||
public String updateByExampleSelective(Map<String, Object> parameter) { |
||||
HighTelOrder record = (HighTelOrder) parameter.get("record"); |
||||
HighTelOrderExample example = (HighTelOrderExample) parameter.get("example"); |
||||
|
||||
SQL sql = new SQL(); |
||||
sql.UPDATE("high_tel_order"); |
||||
|
||||
if (record.getId() != null) { |
||||
sql.SET("id = #{record.id,jdbcType=INTEGER}"); |
||||
} |
||||
|
||||
if (record.getOrderId() != null) { |
||||
sql.SET("order_id = #{record.orderId,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getOutOrderId() != null) { |
||||
sql.SET("out_order_id = #{record.outOrderId,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getMchid() != null) { |
||||
sql.SET("mchid = #{record.mchid,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getTel() != null) { |
||||
sql.SET("tel = #{record.tel,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getPrice() != null) { |
||||
sql.SET("price = #{record.price,jdbcType=DECIMAL}"); |
||||
} |
||||
|
||||
if (record.getStatus() != null) { |
||||
sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); |
||||
} |
||||
|
||||
if (record.getPayTime() != null) { |
||||
sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getCreateTime() != null) { |
||||
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getUpdateTime() != null) { |
||||
sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getExt1() != null) { |
||||
sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getExt2() != null) { |
||||
sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getExt3() != null) { |
||||
sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
applyWhere(sql, example, true); |
||||
return sql.toString(); |
||||
} |
||||
|
||||
public String updateByExample(Map<String, Object> parameter) { |
||||
SQL sql = new SQL(); |
||||
sql.UPDATE("high_tel_order"); |
||||
|
||||
sql.SET("id = #{record.id,jdbcType=INTEGER}"); |
||||
sql.SET("order_id = #{record.orderId,jdbcType=VARCHAR}"); |
||||
sql.SET("out_order_id = #{record.outOrderId,jdbcType=VARCHAR}"); |
||||
sql.SET("mchid = #{record.mchid,jdbcType=VARCHAR}"); |
||||
sql.SET("tel = #{record.tel,jdbcType=VARCHAR}"); |
||||
sql.SET("price = #{record.price,jdbcType=DECIMAL}"); |
||||
sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); |
||||
sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}"); |
||||
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); |
||||
sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}"); |
||||
sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}"); |
||||
sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}"); |
||||
sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}"); |
||||
|
||||
HighTelOrderExample example = (HighTelOrderExample) parameter.get("example"); |
||||
applyWhere(sql, example, true); |
||||
return sql.toString(); |
||||
} |
||||
|
||||
public String updateByPrimaryKeySelective(HighTelOrder record) { |
||||
SQL sql = new SQL(); |
||||
sql.UPDATE("high_tel_order"); |
||||
|
||||
if (record.getOrderId() != null) { |
||||
sql.SET("order_id = #{orderId,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getOutOrderId() != null) { |
||||
sql.SET("out_order_id = #{outOrderId,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getMchid() != null) { |
||||
sql.SET("mchid = #{mchid,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getTel() != null) { |
||||
sql.SET("tel = #{tel,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getPrice() != null) { |
||||
sql.SET("price = #{price,jdbcType=DECIMAL}"); |
||||
} |
||||
|
||||
if (record.getStatus() != null) { |
||||
sql.SET("`status` = #{status,jdbcType=INTEGER}"); |
||||
} |
||||
|
||||
if (record.getPayTime() != null) { |
||||
sql.SET("pay_time = #{payTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getCreateTime() != null) { |
||||
sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getUpdateTime() != null) { |
||||
sql.SET("update_time = #{updateTime,jdbcType=TIMESTAMP}"); |
||||
} |
||||
|
||||
if (record.getExt1() != null) { |
||||
sql.SET("ext_1 = #{ext1,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getExt2() != null) { |
||||
sql.SET("ext_2 = #{ext2,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
if (record.getExt3() != null) { |
||||
sql.SET("ext_3 = #{ext3,jdbcType=VARCHAR}"); |
||||
} |
||||
|
||||
sql.WHERE("id = #{id,jdbcType=INTEGER}"); |
||||
|
||||
return sql.toString(); |
||||
} |
||||
|
||||
protected void applyWhere(SQL sql, HighTelOrderExample example, boolean includeExamplePhrase) { |
||||
if (example == null) { |
||||
return; |
||||
} |
||||
|
||||
String parmPhrase1; |
||||
String parmPhrase1_th; |
||||
String parmPhrase2; |
||||
String parmPhrase2_th; |
||||
String parmPhrase3; |
||||
String parmPhrase3_th; |
||||
if (includeExamplePhrase) { |
||||
parmPhrase1 = "%s #{example.oredCriteria[%d].allCriteria[%d].value}"; |
||||
parmPhrase1_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}"; |
||||
parmPhrase2 = "%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}"; |
||||
parmPhrase2_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}"; |
||||
parmPhrase3 = "#{example.oredCriteria[%d].allCriteria[%d].value[%d]}"; |
||||
parmPhrase3_th = "#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}"; |
||||
} else { |
||||
parmPhrase1 = "%s #{oredCriteria[%d].allCriteria[%d].value}"; |
||||
parmPhrase1_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}"; |
||||
parmPhrase2 = "%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}"; |
||||
parmPhrase2_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}"; |
||||
parmPhrase3 = "#{oredCriteria[%d].allCriteria[%d].value[%d]}"; |
||||
parmPhrase3_th = "#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}"; |
||||
} |
||||
|
||||
StringBuilder sb = new StringBuilder(); |
||||
List<Criteria> oredCriteria = example.getOredCriteria(); |
||||
boolean firstCriteria = true; |
||||
for (int i = 0; i < oredCriteria.size(); i++) { |
||||
Criteria criteria = oredCriteria.get(i); |
||||
if (criteria.isValid()) { |
||||
if (firstCriteria) { |
||||
firstCriteria = false; |
||||
} else { |
||||
sb.append(" or "); |
||||
} |
||||
|
||||
sb.append('('); |
||||
List<Criterion> criterions = criteria.getAllCriteria(); |
||||
boolean firstCriterion = true; |
||||
for (int j = 0; j < criterions.size(); j++) { |
||||
Criterion criterion = criterions.get(j); |
||||
if (firstCriterion) { |
||||
firstCriterion = false; |
||||
} else { |
||||
sb.append(" and "); |
||||
} |
||||
|
||||
if (criterion.isNoValue()) { |
||||
sb.append(criterion.getCondition()); |
||||
} else if (criterion.isSingleValue()) { |
||||
if (criterion.getTypeHandler() == null) { |
||||
sb.append(String.format(parmPhrase1, criterion.getCondition(), i, j)); |
||||
} else { |
||||
sb.append(String.format(parmPhrase1_th, criterion.getCondition(), i, j,criterion.getTypeHandler())); |
||||
} |
||||
} else if (criterion.isBetweenValue()) { |
||||
if (criterion.getTypeHandler() == null) { |
||||
sb.append(String.format(parmPhrase2, criterion.getCondition(), i, j, i, j)); |
||||
} else { |
||||
sb.append(String.format(parmPhrase2_th, criterion.getCondition(), i, j, criterion.getTypeHandler(), i, j, criterion.getTypeHandler())); |
||||
} |
||||
} else if (criterion.isListValue()) { |
||||
sb.append(criterion.getCondition()); |
||||
sb.append(" ("); |
||||
List<?> listItems = (List<?>) criterion.getValue(); |
||||
boolean comma = false; |
||||
for (int k = 0; k < listItems.size(); k++) { |
||||
if (comma) { |
||||
sb.append(", "); |
||||
} else { |
||||
comma = true; |
||||
} |
||||
if (criterion.getTypeHandler() == null) { |
||||
sb.append(String.format(parmPhrase3, i, j, k)); |
||||
} else { |
||||
sb.append(String.format(parmPhrase3_th, i, j, k, criterion.getTypeHandler())); |
||||
} |
||||
} |
||||
sb.append(')'); |
||||
} |
||||
} |
||||
sb.append(')'); |
||||
} |
||||
} |
||||
|
||||
if (sb.length() > 0) { |
||||
sql.WHERE(sb.toString()); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,257 @@ |
||||
package com.hai.entity; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* high_tel_order |
||||
* @author |
||||
*/ |
||||
/** |
||||
* |
||||
* 代码由工具生成 |
||||
* |
||||
**/ |
||||
public class HighTelOrder implements Serializable { |
||||
/** |
||||
* 主键ID |
||||
*/ |
||||
private Integer id; |
||||
|
||||
/** |
||||
* 充值订单ID |
||||
*/ |
||||
private String orderId; |
||||
|
||||
/** |
||||
* 官方订单号 |
||||
*/ |
||||
private String outOrderId; |
||||
|
||||
/** |
||||
* 商户ID |
||||
*/ |
||||
private String mchid; |
||||
|
||||
/** |
||||
* 充值手机号码 |
||||
*/ |
||||
private String tel; |
||||
|
||||
/** |
||||
* 充值金额 |
||||
*/ |
||||
private Long price; |
||||
|
||||
/** |
||||
* 交易结果(1 未支付 ,2 支付中 3.已支付 4.支付失败 |
||||
*/ |
||||
private Integer status; |
||||
|
||||
/** |
||||
* 支付时间 |
||||
*/ |
||||
private Date payTime; |
||||
|
||||
/** |
||||
* 创建时间 |
||||
*/ |
||||
private Date createTime; |
||||
|
||||
/** |
||||
* 更新时间 |
||||
*/ |
||||
private Date updateTime; |
||||
|
||||
/** |
||||
* ext_1 |
||||
*/ |
||||
private String ext1; |
||||
|
||||
/** |
||||
* ext_2 |
||||
*/ |
||||
private String ext2; |
||||
|
||||
/** |
||||
* ext_3 |
||||
*/ |
||||
private String ext3; |
||||
|
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
public Integer getId() { |
||||
return id; |
||||
} |
||||
|
||||
public void setId(Integer id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
public String getOrderId() { |
||||
return orderId; |
||||
} |
||||
|
||||
public void setOrderId(String orderId) { |
||||
this.orderId = orderId; |
||||
} |
||||
|
||||
public String getOutOrderId() { |
||||
return outOrderId; |
||||
} |
||||
|
||||
public void setOutOrderId(String outOrderId) { |
||||
this.outOrderId = outOrderId; |
||||
} |
||||
|
||||
public String getMchid() { |
||||
return mchid; |
||||
} |
||||
|
||||
public void setMchid(String mchid) { |
||||
this.mchid = mchid; |
||||
} |
||||
|
||||
public String getTel() { |
||||
return tel; |
||||
} |
||||
|
||||
public void setTel(String tel) { |
||||
this.tel = tel; |
||||
} |
||||
|
||||
public Long getPrice() { |
||||
return price; |
||||
} |
||||
|
||||
public void setPrice(Long price) { |
||||
this.price = price; |
||||
} |
||||
|
||||
public Integer getStatus() { |
||||
return status; |
||||
} |
||||
|
||||
public void setStatus(Integer status) { |
||||
this.status = status; |
||||
} |
||||
|
||||
public Date getPayTime() { |
||||
return payTime; |
||||
} |
||||
|
||||
public void setPayTime(Date payTime) { |
||||
this.payTime = payTime; |
||||
} |
||||
|
||||
public Date getCreateTime() { |
||||
return createTime; |
||||
} |
||||
|
||||
public void setCreateTime(Date createTime) { |
||||
this.createTime = createTime; |
||||
} |
||||
|
||||
public Date getUpdateTime() { |
||||
return updateTime; |
||||
} |
||||
|
||||
public void setUpdateTime(Date updateTime) { |
||||
this.updateTime = updateTime; |
||||
} |
||||
|
||||
public String getExt1() { |
||||
return ext1; |
||||
} |
||||
|
||||
public void setExt1(String ext1) { |
||||
this.ext1 = ext1; |
||||
} |
||||
|
||||
public String getExt2() { |
||||
return ext2; |
||||
} |
||||
|
||||
public void setExt2(String ext2) { |
||||
this.ext2 = ext2; |
||||
} |
||||
|
||||
public String getExt3() { |
||||
return ext3; |
||||
} |
||||
|
||||
public void setExt3(String ext3) { |
||||
this.ext3 = ext3; |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object that) { |
||||
if (this == that) { |
||||
return true; |
||||
} |
||||
if (that == null) { |
||||
return false; |
||||
} |
||||
if (getClass() != that.getClass()) { |
||||
return false; |
||||
} |
||||
HighTelOrder other = (HighTelOrder) that; |
||||
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) |
||||
&& (this.getOrderId() == null ? other.getOrderId() == null : this.getOrderId().equals(other.getOrderId())) |
||||
&& (this.getOutOrderId() == null ? other.getOutOrderId() == null : this.getOutOrderId().equals(other.getOutOrderId())) |
||||
&& (this.getMchid() == null ? other.getMchid() == null : this.getMchid().equals(other.getMchid())) |
||||
&& (this.getTel() == null ? other.getTel() == null : this.getTel().equals(other.getTel())) |
||||
&& (this.getPrice() == null ? other.getPrice() == null : this.getPrice().equals(other.getPrice())) |
||||
&& (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) |
||||
&& (this.getPayTime() == null ? other.getPayTime() == null : this.getPayTime().equals(other.getPayTime())) |
||||
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) |
||||
&& (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())) |
||||
&& (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1())) |
||||
&& (this.getExt2() == null ? other.getExt2() == null : this.getExt2().equals(other.getExt2())) |
||||
&& (this.getExt3() == null ? other.getExt3() == null : this.getExt3().equals(other.getExt3())); |
||||
} |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
final int prime = 31; |
||||
int result = 1; |
||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); |
||||
result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode()); |
||||
result = prime * result + ((getOutOrderId() == null) ? 0 : getOutOrderId().hashCode()); |
||||
result = prime * result + ((getMchid() == null) ? 0 : getMchid().hashCode()); |
||||
result = prime * result + ((getTel() == null) ? 0 : getTel().hashCode()); |
||||
result = prime * result + ((getPrice() == null) ? 0 : getPrice().hashCode()); |
||||
result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); |
||||
result = prime * result + ((getPayTime() == null) ? 0 : getPayTime().hashCode()); |
||||
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); |
||||
result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); |
||||
result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode()); |
||||
result = prime * result + ((getExt2() == null) ? 0 : getExt2().hashCode()); |
||||
result = prime * result + ((getExt3() == null) ? 0 : getExt3().hashCode()); |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
StringBuilder sb = new StringBuilder(); |
||||
sb.append(getClass().getSimpleName()); |
||||
sb.append(" ["); |
||||
sb.append("Hash = ").append(hashCode()); |
||||
sb.append(", id=").append(id); |
||||
sb.append(", orderId=").append(orderId); |
||||
sb.append(", outOrderId=").append(outOrderId); |
||||
sb.append(", mchid=").append(mchid); |
||||
sb.append(", tel=").append(tel); |
||||
sb.append(", price=").append(price); |
||||
sb.append(", status=").append(status); |
||||
sb.append(", payTime=").append(payTime); |
||||
sb.append(", createTime=").append(createTime); |
||||
sb.append(", updateTime=").append(updateTime); |
||||
sb.append(", ext1=").append(ext1); |
||||
sb.append(", ext2=").append(ext2); |
||||
sb.append(", ext3=").append(ext3); |
||||
sb.append(", serialVersionUID=").append(serialVersionUID); |
||||
sb.append("]"); |
||||
return sb.toString(); |
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,61 @@ |
||||
package com.hai.service; |
||||
|
||||
import com.hai.entity.HighTelOrder; |
||||
|
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* @ClassName TelApiService.java |
||||
* @author Sum1Dream |
||||
* @version 1.0.0 |
||||
* @Description //话费充值管理
|
||||
* @createTime 14:17 2021/5/28 |
||||
**/ |
||||
public interface TelApiService { |
||||
|
||||
/** |
||||
* @Author Sum1Dream |
||||
* @Description // 查询话费订单列表
|
||||
* @Date 11:33 2021/5/28 |
||||
* @Param [map] |
||||
* @return java.util.List<com.hai.entity.HighTelOrder> |
||||
**/ |
||||
List<HighTelOrder> getTelOrderList(Map<String , Object> map); |
||||
|
||||
/** |
||||
* @Author Sum1Dream |
||||
* @Description //新增话费订单
|
||||
* @Date 11:34 2021/5/28 |
||||
* @Param [highTelOrder] |
||||
* @return void |
||||
**/ |
||||
void insertOrder(HighTelOrder highTelOrder); |
||||
|
||||
/** |
||||
* @Author Sum1Dream |
||||
* @Description //修改话费订单
|
||||
* @Date 11:35 2021/5/28 |
||||
* @Param [highTelOrder] |
||||
* @return void |
||||
**/ |
||||
void updateOrder(HighTelOrder highTelOrder); |
||||
|
||||
/** |
||||
* @Author Sum1Dream |
||||
* @Description // 根据ID查询订单详情
|
||||
* @Date 11:36 2021/5/28 |
||||
* @Param [id] |
||||
* @return com.hai.entity.HighTelOrder |
||||
**/ |
||||
HighTelOrder findOrderById(Integer id); |
||||
|
||||
/** |
||||
* @Author Sum1Dream |
||||
* @Description //话费充值 验签成功后业务调用
|
||||
* @Date 16:44 2021/5/28 |
||||
* @Param [paramsMap] 异步回调返回的参数 |
||||
* @return java.lang.String |
||||
**/ |
||||
String telApiNotify(Map<String, String> paramsMap) throws Exception; |
||||
} |
@ -0,0 +1,75 @@ |
||||
package com.hai.service.impl; |
||||
|
||||
import com.hai.dao.HighTelOrderMapper; |
||||
import com.hai.entity.HighTelOrder; |
||||
import com.hai.service.TelApiService; |
||||
import com.hai.service.pay.PayService; |
||||
import com.hai.service.pay.impl.NotifyServiceImpl; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
import org.springframework.stereotype.Service; |
||||
import org.springframework.transaction.annotation.Propagation; |
||||
import org.springframework.transaction.annotation.Transactional; |
||||
|
||||
import javax.annotation.Resource; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
@Service("telApiService") |
||||
public class TelApiServiceImpl implements TelApiService { |
||||
|
||||
@Resource |
||||
private HighTelOrderMapper highTelOrderMapper; |
||||
|
||||
private static Logger log = LoggerFactory.getLogger(TelApiServiceImpl.class); |
||||
|
||||
@Override |
||||
public List<HighTelOrder> getTelOrderList(Map<String, Object> map) { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public void insertOrder(HighTelOrder highTelOrder) { |
||||
highTelOrderMapper.insert(highTelOrder); |
||||
} |
||||
|
||||
@Override |
||||
public void updateOrder(HighTelOrder highTelOrder) { |
||||
highTelOrderMapper.updateByPrimaryKey(highTelOrder); |
||||
} |
||||
|
||||
@Override |
||||
public HighTelOrder findOrderById(Integer id) { |
||||
return highTelOrderMapper.selectByPrimaryKey(id); |
||||
} |
||||
|
||||
@Override |
||||
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
||||
public String telApiNotify(Map<String, String> paramsMap) throws Exception { |
||||
String resXml = null; |
||||
|
||||
if ("1".equals(paramsMap.get("status"))) { |
||||
log.info("话费充值 -> 异步通知:支付成功,进入订单处理"); |
||||
|
||||
String orderId = paramsMap.get("order_id"); |
||||
|
||||
// if (payService != null) {
|
||||
// payService.paySuccess(paramsMap, "WechatPay"); // 商户内部实际的交易业务处理
|
||||
// log.info("微信支付 -> 异步通知:订单处理完成");
|
||||
// } else {
|
||||
// log.error("微信支付 -> 异步通知:业务处理,payService获取失败");
|
||||
// }
|
||||
|
||||
// 通知微信.异步确认成功.必写.不然会一直通知后台.八次之后就认为交易失败了
|
||||
resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>" |
||||
+ "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> "; |
||||
} else { |
||||
log.error("微信支付 -> 异步通知:支付失败,错误信息:" + paramsMap.get("err_code_des")); |
||||
resXml = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>" + "<return_msg><![CDATA[" |
||||
+ paramsMap.get("err_code_des") + "]]></return_msg>" + "</xml> "; |
||||
} |
||||
|
||||
|
||||
return resXml; |
||||
} |
||||
} |
Loading…
Reference in new issue