Shop.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <?php
  2. defined('IN_WEB') or die('Include Error!');
  3. /**
  4. * 机器人相关
  5. */
  6. class Shop
  7. {
  8. public function getRecommend($param){
  9. return oo::commonOprModel('readconfig')->getSysCon('Shop',"recommend");
  10. }
  11. public function saveRecommend($param){
  12. return oo::commonOprModel('readconfig')->setSysCon('Shop',"recommend",$param['data']);
  13. }
  14. public function config($param){
  15. $type = oo::functions()->uint($param['type']);
  16. if(empty($type))
  17. return json_encode(['code'=>-1]);
  18. $tb = otable::goodsCrazy();
  19. $sql = "SELECT * FROM {$tb} WHERE gtype={$type}";
  20. $ret = oo::commonOprDb('common')->getAll($sql,1);
  21. $returnData = [
  22. 'code'=>1,
  23. 'data'=>$ret,
  24. ];
  25. if($type != 21){
  26. return json_encode($returnData);
  27. }
  28. //钻石商城和兑换列表
  29. $dtb = otable::diamondCrazy();
  30. $sql = "SELECT * FROM {$dtb} WHERE pid IN(1, 2, 3,6) order by gid";
  31. $returnData['exchanges'] = oo::commonOprDb('common')->getAll($sql,1);
  32. $sql = "SELECT * FROM {$dtb} WHERE pid IN(4, 5) order by gid";
  33. $returnData['notenough'] = oo::commonOprDb('common')->getAll($sql,1);
  34. return json_encode($returnData);
  35. }
  36. public function saveConfig($param){
  37. $type = oo::functions()->escape($param['type']);
  38. $data = json_decode($param['data']);
  39. $tb = otable::goodsCrazy();
  40. foreach ($data as $key=>$row){
  41. switch ($type){
  42. case 1:
  43. $sql = "UPDATE {$tb} SET gattribute='{$row->gattribute}',gsku='{$row->gsku}',gname='{$row->gname}',gname_en='{$row->gname_en}',gdesc='{$row->gdesc}',gdesc_en='{$row->gdesc_en}',goriginReward='{$row->goriginReward}',gbaseReward='{$row->gbaseReward}',gimg='{$row->gimg}',gstatus='{$row->gstatus}',gprice='{$row->gprice}' WHERE gid={$row->gid}";
  44. break;
  45. case 2:
  46. $sql = "UPDATE {$tb} SET gattribute='{$row->gattribute}',gsku='{$row->gsku}',gname='{$row->gname}',gname_en='{$row->gname_en}',gdesc='{$row->gdesc}',gdesc_en='{$row->gdesc_en}',gimg='{$row->gimg}',gstatus='{$row->gstatus}',gprice='{$row->gprice}' WHERE gid={$row->gid}";
  47. break;
  48. case 3:
  49. $sql = "UPDATE {$tb} SET gname='{$row->gname}',gname_en='{$row->gname_en}',gdesc='{$row->gdesc}',gdesc_en='{$row->gdesc_en}',goriginReward='{$row->goriginReward}',gbaseReward='{$row->gbaseReward}',gimg='{$row->gimg}',gstatus='{$row->gstatus}' WHERE gid={$row->gid}";
  50. break;
  51. case 4:
  52. $sql = "UPDATE {$tb} SET gsku='{$row->gsku}',gname='{$row->gname}',gname_en='{$row->gname_en}',gdesc='{$row->gdesc}',gdesc_en='{$row->gdesc_en}',goriginReward='{$row->goriginReward}',gbaseReward='{$row->gbaseReward}',gimg='{$row->gimg}',gstatus='{$row->gstatus}',gprice='{$row->gprice}' WHERE gid={$row->gid}";
  53. break;
  54. case 5:
  55. $sql = "UPDATE {$tb} SET gsku='{$row->gsku}',gname='{$row->gname}',gname_en='{$row->gname_en}',gdesc='{$row->gdesc}',gdesc_en='{$row->gdesc_en}',goriginReward='{$row->goriginReward}',gbaseReward='{$row->gbaseReward}',gimg='{$row->gimg}',gstatus='{$row->gstatus}',gprice='{$row->gprice}' WHERE gid={$row->gid}";
  56. break;
  57. case 6:
  58. $sql = "UPDATE {$tb} SET gsku='{$row->gsku}',gname='{$row->gname}',gname_en='{$row->gname_en}',gdesc='{$row->gdesc}',gdesc_en='{$row->gdesc_en}',goriginReward='{$row->goriginReward}',gbaseReward='{$row->gbaseReward}',gimg='{$row->gimg}',gstatus='{$row->gstatus}',gprice='{$row->gprice}',gdiscount='{$row->gdiscount}' WHERE gid={$row->gid}";
  59. break;
  60. case 9:
  61. $sql = "UPDATE {$tb} SET gsku='{$row->gsku}',gname='{$row->gname}',gdesc='{$row->gdesc}',gbaseReward='{$row->gbaseReward}',gprice='{$row->gprice}',gMax='{$row->gMax}' WHERE gid={$row->gid}";
  62. break;
  63. default:
  64. $sql = "UPDATE {$tb} SET ";
  65. $update = '';
  66. foreach ($row as $x=>$y){
  67. $update .= "$x='$y',";
  68. }
  69. $update = trim($update,',');
  70. $sql = $sql.$update." WHERE gid='{$key}'";
  71. }
  72. $rs = oo::commonOprDb('common')->query($sql);
  73. }
  74. if($type == 21){
  75. $exchanges = json_decode($param['exchanges']);
  76. $tb = otable::diamondCrazy();
  77. foreach ($exchanges as $row){
  78. $sql = "UPDATE {$tb} SET name='{$row->name}',price='{$row->price}',gbaseReward='{$row->gbaseReward}',times={$row->times} WHERE gid={$row->gid}";
  79. $rs = oo::commonOprDb('common')->query($sql);
  80. }
  81. $notenough = json_decode($param['notenough']);
  82. foreach ($notenough as $row){
  83. $sql = "UPDATE {$tb} SET name='{$row->name}',price='{$row->price}',gbaseReward='{$row->gbaseReward}',gaddRatio={$row->gaddRatio} WHERE gid={$row->gid}";
  84. $rs = oo::commonOprDb('common')->query($sql);
  85. }
  86. oo::commonOprRedis("common")->delete(okeys::shopDiamond()); //清除缓存
  87. oo::commonOprRedis("common")->delete(okeys::notEnouthDiamond()); //清除缓存
  88. }
  89. return $rs ? $rs : 0;
  90. }
  91. public function level(){
  92. $tb = otable::goodsCoin();
  93. $sql = "SELECT * FROM {$tb} WHERE 1";
  94. $ret = oo::commonOprDb('common')->getAll($sql,1);
  95. $temp = [];
  96. $i = 0;
  97. foreach ($ret as $key=>$row){
  98. $temp[$i]['levelId'] = $row['levelId'];
  99. $temp[$i][$row['gsku']] = $row['num'];
  100. if(($key+1)%6 == 0){
  101. $i += 1;
  102. }
  103. }
  104. $returnData = [
  105. 'code'=>1,
  106. 'data'=>$temp,
  107. ];
  108. return json_encode($returnData);
  109. }
  110. public function saveLevel($param){
  111. $data = json_decode($param['data'],true);
  112. $tb = otable::goodsCoin();
  113. $dbConn = 'common';
  114. oo::commonOprDb($dbConn)->Start();
  115. try{
  116. // 组装数据
  117. $insertData = [];
  118. $redisKeys = [];
  119. foreach ($data as $row){
  120. foreach ($row['data'] as $key=>$col){
  121. $redisKeys[] = okeys::GoodsCoin($row['levelId'],str_replace('com.gworld.cc.','',$key));
  122. $insertData[] = [
  123. 'levelId' => $row['levelId'],
  124. 'gsku' => $key,
  125. 'num' => $col,
  126. ];
  127. }
  128. }
  129. // 删除记录
  130. $sql = "delete from {$tb} ";
  131. $deleteRes = oo::commonOprDb('common')->query($sql);
  132. if (!$deleteRes)throw new Exception('delete data failed', __LINE__);
  133. // 插入新纪录
  134. $insertSql = funs::db_intsertBatchSQLByKeys($tb, $insertData);
  135. $insertRes = oo::commonOprDb($dbConn)->query($insertSql);
  136. if (!$insertRes)throw new Exception('insert data failed', __LINE__);
  137. oo::commonOprDb($dbConn)->Commit();
  138. }catch (\throwable $e){
  139. oo::commonOprDb($dbConn)->Rollback();
  140. oo::logs()->debug3('操作失败:'.$e->getMessage());
  141. return 0;
  142. }
  143. // 删除缓存
  144. foreach ($redisKeys as $redisKey){
  145. oo::commonOprRedis('config')->delete($redisKey);
  146. }
  147. return 1;
  148. }
  149. public function CardChest(){
  150. $tb = otable::CardChest();
  151. $sql = "SELECT * FROM {$tb} WHERE 1";
  152. $ret = oo::commonOprDb('common')->getAll($sql,MYSQLI_ASSOC);
  153. $returnData = [
  154. 'code'=>1,
  155. 'data'=>$ret,
  156. ];
  157. return json_encode($returnData);
  158. }
  159. public function saveCardChest($param){
  160. $data = json_decode($param['data'],true);
  161. $tb = otable::CardChest();
  162. $sql = "SELECT * FROM {$tb} WHERE 1";
  163. $ret = oo::commonOprDb('common')->getAll($sql,MYSQLI_ASSOC);
  164. $id = [];
  165. foreach ($ret as $row){
  166. $id[] = $row['levelId'];
  167. }
  168. foreach ($data as $row){
  169. $superChest = empty($row['superChest']) ? 0 : $row['superChest'];
  170. if(in_array($row['levelId'],$id)){
  171. $sql = "UPDATE {$tb} SET woodenChest='{$row['woodenChest']}',goldenChest='{$row['goldenChest']}',magicalChest='{$row['magicalChest']}',superChest='{$superChest}' WHERE levelId={$row['levelId']}";
  172. $rs = oo::commonOprDb('common')->query($sql);
  173. }else{
  174. $sql = "INSERT INTO {$tb} (levelId,woodenChest,goldenChest,magicalChest,superChest) VALUES ({$row['levelId']},'{$row['woodenChest']}','{$row['goldenChest']}','{$row['magicalChest']}','{$superChest}')";
  175. $rs = oo::commonOprDb('common')->query($sql);
  176. }
  177. }
  178. oo::commonOprRedis('Config')->delete(okeys::CardChestConfig());
  179. return $rs?$rs:0;
  180. }
  181. public function payDistributed($param){
  182. $this->payBlackList['uid'] = oo::commonOprModel("config")->payWhiteList();
  183. $stime = $param['stime'];
  184. $etime = $param['etime'];
  185. $out = [];
  186. $days = $this->diffDay($stime,$etime);
  187. $tb = otable::summarylist();
  188. $blackUidArr = $this->payBlackList['uid'];
  189. $blackUidStr = implode(',', $blackUidArr);
  190. for($i=0;$i<=$days;$i++){
  191. $s = strtotime("$stime +$i days 00:00:00");
  192. $e = strtotime("$stime +$i days 23:59:59");
  193. $sql = "SELECT * FROM {$tb} WHERE sl_status=2 AND sl_sid != -1 AND sl_pay_time>={$s} AND sl_pay_time<{$e} AND sl_uid NOT IN ({$blackUidStr}) ";
  194. $ret = oo::commonOprDb('payment')->getAll($sql,MYSQLI_ASSOC);
  195. $out[] = $ret;
  196. }
  197. $tb = otable::goodsCrazy();
  198. $sql = "SELECT gid,gname,gpid FROM {$tb} WHERE 1";
  199. $good = oo::commonOprDb('payment')->getAll($sql,MYSQLI_ASSOC);
  200. return oo::response(1,['good'=>$good,'data'=>$out]);
  201. }
  202. public function diffDay($start_date,$end_date){
  203. $datetime_start = new DateTime($start_date);
  204. $datetime_end = new DateTime($end_date);
  205. $days = $datetime_start->diff($datetime_end)->days;
  206. return $days;
  207. }
  208. public function setSerialPack($param){
  209. $data = json_decode($param['data'],true);
  210. $tb = otable::goodsCrazy();
  211. foreach ($data as $gid=>$gInfo){
  212. $set = "";
  213. foreach ($gInfo as $key=>$value){
  214. $set .= "`{$key}`='{$value}',";
  215. }
  216. $set = trim($set,',');
  217. $rs = oo::commonOprDb('common')->query("UPDATE {$tb} SET {$set} WHERE gid={$gid}");
  218. }
  219. return $rs;
  220. }
  221. }